[Bug] docker compose down关闭之后无法启动,必须手动移除tsfile
- Lenguaje dominante
- Java
- Estrellas
- 6.4k
- Forks
- 1.2k
- Merge medio
- 1 d 23 h
- PR fusionados (30 d)
- 115
Descripción
### Search before asking
- [x] I searched in the [issues](https://github.com/apache/iotdb/issues) and found nothing similar.
### Version
版本2.0.8,docker部署
### Describe the bug and provide the minimal reproduce step
docker compose关闭服务,再启动时直接报错:
Aborting due to java.lang.OutOfMemoryError: Java heap space # # A fatal error has been detected by the Java Runtime Environment: # # Internal Error (debug.cpp:362), pid=7, tid=468 # fatal error: OutOfMemory encountered: Java heap space # # JRE version: OpenJDK Runtime Environment Temurin-17.0.15+6 (17.0.15+6) (build 17.0.15+6) # Java VM: OpenJDK 64-Bit Server VM Temurin-17.0.15+6 (17.0.15+6, mixed mode, sharing, tiered, compressed oops, compressed class ptrs, g1 gc, linux-amd64) # Core dump will be written. Default location: Core dumps may be processed with "/usr/lib/systemd/systemd-coredump %P %u %g %s %t %c %h %d" (or dumping to /iotdb/sbin/core.7) # # An error report file with more information is saved as: # /iotdb/sbin/hs_err_pid7.log 2026-07-14 08:51:04,653 [pool-39-IoTDB-TsFile-Recover-2] INFO o.a.i.d.s.d.w.r.f.UnsealedTsFileRecoverPerformer:291 - The compression ratio of tsfile /iotdb/data/datanode/data/sequence/iot_data/8/2949/1784016833721-8-0-0.tsfile is 0.00, totalMemTableSize: 0, the file size: 3867189
解决方案:按gpt提示,通过以下命令找到缺少resource的tsfile:
```bash
find ./iotdb/data/datanode/data -type f -name '*.tsfile' |
while IFS= read -r file; do
[ -f "${file}.resource" ] || echo "$file"
done | tee /tmp/tsfiles-without-resource.txt
wc -l /tmp/tsfiles-without-resource.txt
```
然后将这几个文件移动走,才能正常启动服务。
### What did you expect to see?
服务关闭之后能够自行正常启动,这是一个基本能力。
### What did you see instead?
服务实现优雅关闭
### Anything else?
_No response_
### Are you willing to submit a PR?
- [ ] I'm willing to submit a PR!
Guía de contribución
Línea de trabajo
Reproduzca el fallo con el despliegue de Docker Compose de la versión 2.0.8 y, a continuación, inspeccione la recuperación durante el inicio alrededor de UnsealedTsFileRecoverPerformer y los archivos afectados en iotdb/data/datanode/data. Compare los registros del apagado y del reinicio, especialmente los casos en los que un .tsfile no tiene su archivo .resource. Se considera terminado cuando el servicio se reinicia correctamente después de un apagado normal sin mover archivos manualmente, y existe cobertura para el caso reproducido si se identifica el área de pruebas relevante.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- docker, java
- Área
- databases
- Tipo de issue
- Error
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Estado de actividad
- Tranquilo
- Claridad
- Bastante claro
- Aptitud para principiantes
- 48/100