VoxelWriter — async/sync stream lifecycle race condition
Service
cupixworks-any-voxel-agent
Occurrences
337
Status
Reported
Confidence
80%
Actionability
52%
Cluster ID
8e448fd2-16e4-4d37-b3ed-40482712e5d4
First Seen
2026-04-16 13:41 UTC
Last Seen
2026-06-24 03:55 UTC
Actions
VoxelWriter — async/sync stream lifecycle race condition
RCA Summary#
Capture 682011은 pano 수가 매우 적어 (reconstruction-validator가 "All cluster's pano count is under 20"으로 판정) voxel 계산 결과 voxelCount: 0을 반환했다. VoxelWriter.writeVoxelStream()은 zero-voxel 케이스를 처리하지 않아, mergeSortedFiles()에 빈 파일 배열이 전달되고 즉시 리턴된다. 이후 writeStream.end()와 writeStream.close()가 연속 호출되는데, stream의 비동기 open/flush가 완료되기 전에 fs.statSync(filePath).size (line 34)가 동기적으로 실행되어 ENOENT 에러가 발생한다. 정상적인 voxel 계산(voxelCount > 0)에서는 mergeSortedFiles의 I/O 처리 시간이 stream이 파일을 생성하고 flush할 충분한 시간을 제공하기 때문에 이 문제가 발생하지 않는다.
Scoring#
Confidence 80% · Actionability 52%
Confidence#
| Dimension | Score | Detail |
|---|---|---|
| Evidence completeness | 5/5 | 15 code refs, 4 log queries |
| Code path explicitness | 3/3 | 15 file:line refs |
| Log evidence | 2/3 | section, query |
| RCA structure | 3/3 | 3/3 sections |
| Revision history | 0/3 | 0 revision(s) |
| Agent execution | 3/3 | success |
Actionability#
| Dimension | Score | Detail |
|---|---|---|
| Fix complexity | 5/5 | trivial |
| Affected files | 1/5 | 9 file(s) |
| Single repo | 1/3 | 3 service(s) |
| Immediate actions | 0/3 | absent |
| Testability | 0/3 | no test info |
| External dependency | 3/3 | no external deps |
| Data migration | 3/3 | no migration |