ES /docs

not found cpc files

RCA: not found cpc files

Overview#

What Happened#

2026-04-21 07:12 UTC에 cupixworks-capture-3dreconstruction-instance 서비스에서 capture 683836 (team: burkecgi)의 3D reconstruction job 1026180이 약 46분간 densemapper를 실행한 후 .cpc 파일이 생성되지 않아 실패했다. Densemapper는 6개 cluster 모두에서 fusion 결과 vertex 수가 극히 적거나 0이었고, radiusFiltering()이 남은 vertex를 전부 제거하여 모든 point cloud가 None으로 처리되었다.

Quick Facts#

Field Value
exception.class Error
exception.message not found cpc files
top_frame ThreeDReconstruction.checkPointcloudFiles (app.cjs:8329)
env production, us-west-2
capture.id 683836
job.id 1026180
team.domain burkecgi
densemapper_version 2.8.0 (build 99aeb8ec6d, 2026-04-08)

Affected Teams#

Team / Domain Error Count Impact
burkecgi 1 capture 683836의 3D reconstruction 실패, 자동 retry (job 1026181) 발생

Timeline#

  1. 06:26:10 UTC — Job 1026180 시작, capture 683836 로드 (2 videos, 7 clusters)
  2. 06:26:19 UTC — densemapper 실행 시작 (perspective mode, 242 perspective images, 0 pano)
  3. 06:26:25 UTC — cluster info parsing 실패: Error - failed to parse cluster info. - 'prop'
  4. 06:34:05 UTC — Insta360 OneRS 미지원 firmware 감지 (v2.0.11_build3), camera info 추출 실패
  5. 06:36:01 UTC — 6개 cluster에 pano 할당 완료 (총 896 panos), 모두 outdoor capture 감지
  6. 07:05:32-07:11:59 UTC — 6개 cluster fusion 완료, 모든 cluster에서 pointcloud is None
  7. 07:12:02.641 UTCcheckPointcloudFiles: result 디렉토리에 .cpc 파일 없음 (log.json만 존재)
  8. 07:12:02.642 UTCError: not found cpc files throw, error code AGT1000 설정
  9. 07:12:03 UTC — 서비스 강제 종료 (10초 타이머)
  10. 07:20:20 UTC — Retry job 1026181 시작 (다른 호스트에서)

Error Log#

Datadog Logs

text
Error: not found cpc files
    at ThreeDReconstruction.checkPointcloudFiles (/tmp/agent/dist/app.cjs:8329:15)
    at ThreeDReconstruction.run (:8143:11)
    at ThreeDReconstruction.init (:8093:7)

Impact#

  • Service: cupixworks-capture-3dreconstruction-instance
  • Team: burkecgi
  • 발생 횟수: 1 (이 클러스터), 최근 14일간 동일 에러 21건
  • 최초 발생: 2026-04-21T07:12:02.642Z
  • 최근 발생: 2026-04-21T07:12:02.642Z

Root Cause Summary#

Densemapper 2.8.0이 Insta360 OneRS 카메라의 미지원 firmware (v2.0.11_build3)로 촬영된 outdoor capture를 처리할 때, 비디오에서 camera info 추출에 실패하고 timestamp 손상(jumped/perturbed frames)이 발생했다. 이로 인해 depth estimation 품질이 극히 낮아져 6개 cluster 모두에서 fusion 결과 vertex 수가 0~114개에 불과했고, radiusFiltering()이 이들을 모두 noise로 판단하여 제거했다. 모든 point cloud가 None이 되어 .cpc 파일이 생성되지 않았으며, checkPointcloudFiles에서 .cpc 파일 부재를 감지하고 에러를 throw했다.

Technical Analysis#

Code Path#

  • Entry point: three-d-reconstruction-service.ts:57init() 호출
  • run() 메서드에서 job 로드 → 비디오 다운로드 → densemapper 실행 → checkPointcloudFiles 순서로 진행
three-d-reconstruction-service.ts:298-328typescript
private runThreeDReconstruction = async (cpCapture: CPCapture): Promise<void> => {
    // ...
    try {
        await this.threeDReconstructorManager.execute({
            domain: teamDomain,
            // ... params
        });
        const pointcloudDirPath = path.join(Constants.DefaultWorkspacePath, `${teamDomain}.${cpCapture.id}_result`);
        await cpCapture.setPointcloudDirPath(pointcloudDirPath);
    } catch (error: any) {
        // densemapper 실행 자체가 실패하면 여기서 catch
        throw new Error(`Failed to execute densemapper...`);
    }
};

Densemapper 프로세스는 exit code 0으로 정상 종료했다 (execute() end. elapsed: 2727.88). 그러나 .cpc 파일을 생성하지 못한 채 종료한 것이 핵심 문제이다. Densemapper는 내부적으로 각 cluster fusion 결과가 None이면 .cpc 파일을 건너뛰고 _log.json만 생성한다.

  • Failure point: three-d-reconstruction-service.ts:330-338checkPointcloudFiles
three-d-reconstruction-service.ts:330-338typescript
private checkPointcloudFiles = async (cpCapture: CPCapture): Promise<void> => {
    logger.debug('ThreeDReconstruction::checkPointcloudFiles | begin');
    const fileList = await CPUtils.getFiles(cpCapture.pointCloudDirPath);
    const cpcFileList = fileList.filter(filePath => path.extname(filePath) === '.cpc' && !filePath.includes('mesh'));
    if (cpcFileList.length < 1) {
        logger.warn('ThreeDReconstruction::checkPointcloudFiles | not found cpc files');
        throw new Error('not found cpc files');
    }
    // ...
};

pointCloudDirPath/tmp/workspace/burkecgi.683836_result로 설정되어 있었고 (line 318에서 densemapper 실행 후 override), 이 디렉토리에는 6개의 _log.json 파일만 존재했다. .cpc 파일이 0개이므로 line 337에서 에러가 throw되었다.

Log Evidence#

Datadog에서 사용한 주요 쿼리:

text
service:cupixworks-capture-3dreconstruction-instance @job.id:1026180

에러 직전 warn 로그 (1ms 차이):

text
2026-04-21T07:12:02.641Z [warn] ThreeDReconstruction::checkPointcloudFiles | not found cpc files
2026-04-21T07:12:02.642Z [error] not found cpc files

Debug 로그에서 확인된 result 디렉토리 내용:

json
[
  "/tmp/workspace/burkecgi.683836_result/burkecgi.683836_1289501_log.json",
  "/tmp/workspace/burkecgi.683836_result/burkecgi.683836_1289890_log.json",
  "/tmp/workspace/burkecgi.683836_result/burkecgi.683836_1289891_log.json",
  "/tmp/workspace/burkecgi.683836_result/burkecgi.683836_1289892_log.json",
  "/tmp/workspace/burkecgi.683836_result/burkecgi.683836_1289893_log.json",
  "/tmp/workspace/burkecgi.683836_result/burkecgi.683836_1289894_log.json"
]

Densemapper debug 로그에서 확인된 각 cluster fusion 결과:

text
cluster[1289501] fusion elapsed: 41.19s, total vertices: 21, radiusFiltering removed: 21 → pointcloud is None
cluster[1289891] fusion elapsed: 47.95s, total vertices: 3, radiusFiltering removed: 3 → pointcloud is None
cluster[1289890] fusion elapsed: 33.11s, total vertices: 0 → pointcloud is None
cluster[1289892] fusion elapsed: 39.06s, total vertices: 10, radiusFiltering removed: 10 → pointcloud is None
cluster[1289894] fusion elapsed: 63.74s, total vertices: 114, radiusFiltering removed: 114 → pointcloud is None
cluster[1289893] fusion elapsed: 35.22s, total vertices: 0 → pointcloud is None

카메라 관련 에러 로그:

text
2026-04-21T06:34:05Z Unsupported firmware version detected - Camera: Insta360 OneRS, version: v2.0.11_build3
2026-04-21T06:34:05Z Failed to get valid capture stats
2026-04-21T06:34:05Z Failed to get camera info from video. skip adding camera info

비디오 timestamp 문제:

text
jumped frames: 10, perturbed frames: 88 (out of 910 total)

최근 14일간 동일 에러 빈도:

text
service:cupixworks-capture-3dreconstruction-instance "not found cpc files" status:error
→ 21건 (평균 ~1.5건/일)

Hypotheses Considered#

# Hypothesis Evidence for Evidence against Verdict
H1 미지원 카메라 firmware로 인한 depth estimation 품질 저하 debug 로그: "Unsupported firmware version v2.0.11_build3", "Failed to get camera info from video", jumped frames 10개 + perturbed frames 88개, 6개 cluster 모두 vertex 수 극히 낮음 (0~114) Confirmed
H2 Densemapper 실행 자체가 실패하여 .cpc 미생성 densemapper exit code 0, "execute() end. elapsed: 2727.88" 정상 완료 로그 확인. runThreeDReconstruction에서 에러 미발생 Rejected
H3 result 디렉토리 경로 불일치로 .cpc 파일을 다른 위치에서 찾음 debug 로그에서 checkPointcloudFiles가 올바른 경로 /tmp/workspace/burkecgi.683836_result를 조회했고, 해당 디렉토리에 6개 _log.json 파일이 실제로 존재 확인 Rejected
H4 Outdoor capture의 depth_max_distance 설정이 부적절하여 point cloud 품질 저하 debug 로그: 6개 cluster 모두 outdoor 감지, depth_max_distance 10.0m 적용. Outdoor occupancy ratio가 높은 cluster (1.0)에서도 vertex 0개 다른 outdoor capture에서 정상 동작하는 사례가 있을 수 있으므로 이것만으로는 단독 원인이 아님 Contributing factor

Fix Recommendation#

즉시 조치 (Critical)#

  • 이 에러는 densemapper가 유효한 point cloud를 생성하지 못한 입력 데이터 품질 문제이다. 현재 checkPointcloudFiles (three-d-reconstruction-service.ts:335-337)에서 .cpc 파일이 없으면 무조건 에러를 throw하는데, 이 에러 레벨을 error에서 warn으로 낮추는 것을 검토해야 한다. Densemapper가 정상 종료(exit 0)했으나 결과물이 없는 경우는 입력 데이터 품질 문제이지 시스템 버그가 아니다.
  • _log.json 파일에 각 cluster별 실패 원인(vertex 수, filtering 결과)이 기록되어 있으므로, checkCpcLogJsonFile에서 이 정보를 먼저 파싱하여 실패 원인을 API에 기록하면 디버깅이 용이해진다.

단기 개선 (1주 이내)#

  • checkPointcloudFiles에서 .cpc 파일이 없을 때 _log.json 파일의 내용을 분석하여, "모든 cluster에서 pointcloud is None" 등 구체적인 실패 원인을 에러 메시지에 포함시킨다.
  • Densemapper가 미지원 카메라 firmware를 감지했을 때 early warning을 API에 전달하여, 사용자에게 "지원되지 않는 카메라 버전" 안내를 표시할 수 있도록 한다.

장기 개선 (재발 방지)#

  • Insta360 OneRS firmware v2.0.11_build3 지원을 densemapper 알고리즘 팀에 요청한다.
  • 최근 14일간 21건 발생하는 반복 에러이므로, 입력 데이터 품질에 따른 예상 실패를 시스템 에러와 분리하는 에러 분류 체계를 도입한다 (예: DATA_QUALITY_ERROR vs SYSTEM_ERROR).
  • Outdoor capture에서 radiusFiltering의 threshold를 조정하거나 adaptive filtering을 적용하여 vertex 보존율을 개선한다.

Monitoring#

  • 에러 빈도 추적 쿼리:
text
service:cupixworks-capture-3dreconstruction-instance "not found cpc files" status:error
  • 카메라 firmware별 실패율 모니터링 (미지원 firmware 버전 감지 시 알림):
text
service:cupixworks-capture-3dreconstruction-instance "Unsupported firmware version"
  • Cluster fusion에서 vertex 0인 비율이 높은 capture 모니터링:
text
service:cupixworks-capture-3dreconstruction-instance "pointcloud is None"

Risk Assessment#

  • Risk level: low
  • 예상 복잡도: standard — 에러 자체는 입력 데이터 품질 문제로 인한 예상 가능한 실패이며, 시스템 버그가 아니다. 로그 레벨 조정과 에러 메시지 개선은 agent 코드 수정으로 가능하지만, 근본적인 카메라 호환성/알고리즘 개선은 densemapper 팀과의 협업이 필요하다.