판정표

한 번의 동기화는 원격 매니페스트를 읽어 파일마다 아래처럼 판정. 화면의 미리보기와 실제 동기화가 같은 판정 함수를 사용하므로, 미리보기 결과대로 실행.

판정조건동작
신규매니페스트에 있고, 이 데이터셋에 그 file_id 로 내려받은 파일이 없음내려받음
변경file_id 는 같고 sha256 이 다름(원격에 sha256 이 없어도 변경)다시 내려받아 같은 행을 교체(파일 id 유지)
유지file_id 와 sha256 이 같음변경하지 않음
삭제동기화로 내려받은 파일인데 매니페스트에서 제거됨저장소 객체와 행을 삭제
충돌파일 이름이 직접 업로드한 파일과 중복됨 / 정리한 이름이 비어 있거나 매니페스트 내에서 중복됨건너뛰고 경고를 기록
  • 모든 쓰기는 "원격 file_id 에서 온 파일" 에만 적용. 직접 업로드한 파일은 판정 대상이 아님.
  • 체크섬은 저장소가 실제로 기록한 바이트로 계산해 매니페스트와 비교. 전송 중 잘린 파일이 정상 파일로 통과하지 않음. 일치하지 않으면 그 파일만 폐기하고 경고 기록.
  • 원격의 파일별 meta 와 원래 파일 이름은 플랫폼 파일의 meta.source 에 보관.
  • 같은 file_id 의 이름만 변경되고 내용(sha256)이 같으면 "유지". 플랫폼의 파일 이름은 변경되지 않음.

전송 순서

어노테이션 파일은 마지막에 내려받음. 어노테이션 검증은 데이터셋에 이미 있는 이미지와 짝을 대조. 매니페스트 순서(0001.json < 0001.png)대로 내려받으면 짝 일치율 0%. 실행 끝에 어노테이션을 한 번 더 검증해, 이미지가 이후 실행에서 추가된 경우에도 짝을 대조.

실행 제어

상황동작
같은 데이터셋의 동기화가 실행 중인 상태에서 다시 시작409 (a sync is already running for this dataset)
취소현재 내려받는 파일까지 반영하고 중단. 아직 수행하지 않은 삭제와 manifest.json 재기록은 건너뜀. 다음 동기화는 이미 내려받은 파일을 체크섬으로 확인해 건너뜀.
소스가 비활성연결은 유지, 새 동기화만 차단(409)
동기화 중 파일 업로드 · 삭제 · 재검증, 연결 변경 · 해제409 로 거부. 동기화가 끝나거나 취소된 뒤 다시 시도.
매니페스트를 읽지 못함실행 전체가 실패(연결 불가, 오류 상태 코드, 형식 오류, file_id · filename 이 없는 항목)
서버 재시작실행 중이던 동기화가 RUNNING · PENDING 으로 남아 새 동기화가 409 로 차단될 수 있음. 그 실행을 취소 한 뒤 다시 동기화하면, 이미 내려받은 파일은 체크섬으로 확인해 건너뜀.
여러 데이터셋 동시 동기화서버 전체에서 기본 2개까지(GEO_MLOPS_DATASET_SYNC_MAX_CONCURRENCY). 나머지는 대기.
경고실행 하나에 200건까지 기록

API 로 동기화를 시작하면 202 와 실행 행을 즉시 반환. 진행 상황은 GET /api/v1/datasets/{id}/syncs/{sync_id} 나 실행 목록을 다시 읽어 확인, 취소는 POST /api/v1/datasets/{id}/syncs/{sync_id}:cancel. status 는 PENDING → RUNNING → SUCCEEDED · FAILED · CANCELED 순.

curl -b cookies.txt -H "X-Tenant: DEMO" -X POST \
  "http://localhost:10000/api/v1/datasets/<데이터셋 id>/syncs"
# 도는 중에 한 번 더 부르면:
# {"error_id":"…","code":"conflict","message":"a sync is already running for this dataset","detail":null}

서버 설정

환경 변수기본값설명
GEO_MLOPS_DATASET_SYNC_MAX_CONCURRENCY2동시에 동기화하는 데이터셋 수
GEO_MLOPS_DATASET_SYNC_HTTP_TIMEOUT30원격 호출 한 번의 시간 제한(초). 파일 전체가 아니라 읽기 단위에 적용.
GEO_MLOPS_DATASET_MAX_UPLOAD_BYTES2 GiB파일 하나의 상한(업로드와 같은 값)

미지원 기능

미지원 기능대안
예약·주기 동기화수동 버튼 또는 외부 스케줄러에서 API 호출
updated_at 기준의 동기화 생략매번 매니페스트를 읽고 sha256 으로 비교(변경이 없으면 내려받는 파일 0개)
Range 이어받기실패한 파일은 다음 동기화에서 전체를 다시 내려받음
플랫폼 → DataOps 역방향 업로드(Push)없음. 이 연동은 Pull 전용.
어노테이션 형식·클래스 표 해석매니페스트의 annotation_format · classes 는 기록만 함. 라벨은 내려받은 어노테이션 파일(COCO · LabelMe · VOC)을 검증기가 직접 읽음.

2026-10-02 기준 플랫폼으로 작성

© MLOps Central Platform