apache / apache/iotdb

the memory in the old generation isn't GC in time, with code sessionPool.showPathsTemplateSetOn

Aperta
#14,407 1 commento 0 reazioni 0 assegnatari Vedi su GitHub
Lingua principale
Java
Stelle
6.4k
Fork
1.2k
Merge medio
1g 23h
PR unite (30g)
115

Descrizione

When run the code below, the memory in the old generation isn't GC in time, which eventually leads to the data node crashing.

Version
version: 1.3.2

### log :
A fatal error has been detected by the Java Runtime Environment:
Internal Error (debug.cpp:362), pid=32562, tid=88579
fatal error: OutOfMemory encountered: Java heap space

JRE version: OpenJDK Runtime Environment Corretto-17.0.11.9.1 (17.0.11+9) (build 17.0.11+9-LTS)
Java VM: OpenJDK 64-Bit Server VM Corretto-17.0.11.9.1 (17.0.11+9-LTS, mixed mode, sharing, tiered, compressed oops, compressed class ptrs, g1 gc, bsd-aarch64)

--------------- S U M M A R Y ------------

Command Line: --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.nio=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.net=ALL-UNNAMED -Dlogback.configurationFile=./sbin/../conf/logback-datanode.xml -DIOTDB_HOME=./sbin/.. -DIOTDB_DATA_HOME=./sbin/.. -DTSFILE_HOME=./sbin/.. -DIOTDB_CONF=./sbin/../conf -DTSFILE_CONF=./sbin/../conf -Dname=iotdb\.IoTDB -DIOTDB_LOG_DIR=./sbin/../logs -DOFF_HEAP_MEMORY=1232M -Diotdb.jmx.local=true -Xms4912M -Xmx4912M -XX:MaxDirectMemorySize=1232M -Djdk.nio.maxCachedBufferSize=1291845 -XX:+CrashOnOutOfMemoryError -XX:+UseAdaptiveSizePolicy -Xss512k -XX:SafepointTimeoutDelay=1000 -XX:+SafepointTimeout org.apache.iotdb.db.service.DataNode -s

Host: "Mac14,7" arm64, 8 cores, 16G, Darwin 23.4.0, macOS 14.4 (23E214)
Time: Thu Dec 12 22:29:33 2024 CST elapsed time: 33.258095 seconds (0d 0h 0m 33s)

### code:
```
public class SessionPoolDemo {

private static SessionPool sessionPool;
private static void constructCustomSessionPool() {
sessionPool = new SessionPool.Builder()
.host("127.0.0.1")
.port(6667)
.user("root")
.password("root")
.build();
}

public static void main(String[] args) throws Exception {
constructCustomSessionPool();

for (int i = 0; i < 1000; i++) { // or 5000
List locationTemplate = sessionPool.showPathsTemplateSetOn("locationTemplate");
System.out.println(locationTemplate.size());
}
}
}
```

### GC:
gc

Guida per i contributori

Apri la guida per i contributori

Direzione di ricerca

Inizia con la chiamata SessionPool.showPathsTemplateSetOn usata in SessionPoolDemo e riproduci il problema su IoTDB 1.3.2 utilizzando le impostazioni JVM e le evidenze GC fornite. Traccia le pattern di allocazione e la retention attraverso chiamate ripetute; il lavoro è completo quando il loop non causa più una crescita della old generation che porta a un errore Java heap-space.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
java
Ambito
databases
Tipo di issue
Bug
Difficoltà
4/5
Tempo stimato
3-5 giorni
Stato di attività
Ferma
Chiarezza
Abbastanza chiara
Idoneità per principianti
35/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.