Skip to content

[codex] Add Java 0.1.6 compatibility features - #469

Merged
midagedev merged 1 commit into
mainfrom
codex/release-compat-features
May 9, 2026
Merged

[codex] Add Java 0.1.6 compatibility features#469
midagedev merged 1 commit into
mainfrom
codex/release-compat-features

Conversation

@midagedev

Copy link
Copy Markdown
Owner

Summary

  • Add listCollections, drop, and dropDatabase command handlers for metadata discovery and fixture cleanup flows.
  • Expand UTF runCommand import support for listCollections, distinct, drop, and dropDatabase.
  • Add tier-0 lazy TTL pruning for single-field expireAfterSeconds indexes.
  • Fix deterministic R3 parity gaps for dollar-prefixed _id subfields, replacement-style updateMany, and transactional createIndexes.
  • Move the Java development line to 0.1.6-SNAPSHOT and refresh compatibility/release docs.

Linked Issues

Validation

  • .tooling/gradle-8.10.2/bin/gradle test --tests org.jongodb.command.CommandLifecycleCommandE2ETest --tests org.jongodb.testkit.UnifiedSpecImporterTest --tests org.jongodb.command.DeterministicR3ParityFixTest --tests org.jongodb.engine.InMemoryCollectionStoreTtlTest
  • .tooling/gradle-8.10.2/bin/gradle clean test
  • git diff --check
  • Replayed latest failing createIndexes transaction bundles from Official Suite Sharded run 25593716740; all four success probes now match.
  • Replayed the latest insert _id dollar bundle; success probe now matches. The updateMany replay reaches code 9; the stored historical replay probe still has an exact error string without the local codeName=FailedToParse suffix, while the differential harness compares the error code semantically.

Release Notes

This is intended as the Java 0.1.6 compatibility feature bundle. Release-candidate certification workflows still need to be regenerated on the final RC commit before tagging.

@claude claude Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

APPROVE

이 PR은 Java 0.1.6 호환성 기능 번들로, 명령 처리, TTL 런타임, R3 패리티 수정을 포함합니다.

구현 품질

새로운 명령 핸들러 (Partial)

  • ListCollectionsCommandHandler: filter, nameOnly, authorizedCollections, cursor.batchSize 옵션을 지원하고 커서 형태의 메타데이터를 반환합니다. filter는 점 표기법 경로를 지원합니다.
  • DropCommandHandler: nIndexesWas, ns를 반환하고 존재하지 않는 컬렉션에서는 NamespaceNotFound (code=26)를 반환합니다.
  • DropDatabaseCommandHandler: 데이터베이스 스코프 정리를 수행하고 dropped를 반환합니다.

UTF runCommand 임포터가 listCollections, distinct, drop, dropDatabase를 지원하도록 확장되었습니다.

Tier-0 TTL 런타임 프루닝

InMemoryCollectionStore가 모든 작업 전에 pruneExpiredDocuments()를 호출하여 지연 정리를 수행합니다:

  • 단일 필드 비-부분 TTL 인덱스만 지원 (partialFilterExpression == null && key.size() == 1)
  • DateInstant 값만 지원
  • 주입 가능한 Clock으로 테스트 가능성 확보
  • InMemoryCollectionStoreTtlTest가 만료 경계, 미지원 값/인덱스, 고유 제약조건 검증, 엔진 스냅샷을 커버합니다.

R3 패리티 수정

  1. 달러 접두사 _id 하위 필드 (InsertCommandHandler): _id 문서 내 $-접두사 키에 대해 DollarPrefixedFieldName (code=52) 오류를 반환합니다.
  2. 대체 스타일 updateMany (UpdateCommandHandler): BadValue 대신 FailedToParse (code=9)를 사용합니다.
  3. 트랜잭션 내 createIndexes (TransactionCommandValidator): createindexes가 트랜잭션 명령 집합에 추가되어 트랜잭션 흐름에서 인덱스 생성을 허용합니다.

새로운 DeterministicR3ParityFixTest가 세 가지 수정을 검증합니다.

문서 업데이트

모든 문서가 구현 상태와 일치합니다.

비차단 관찰

  • 새로운 listCollections, drop, dropDatabase 명령은 TRANSACTIONAL_COMMANDS 집합에 없으므로 트랜잭션 내에서는 지원되지 않습니다. 이는 문서화된 단일 프로세스 트랜잭션 범위와 일치합니다.
  • CommandLifecycleCommandE2ETest가 새로운 라이프사이클 명령의 기본 E2E 동작을 커버합니다.
  • 버전 번호가 0.1.3-SNAPSHOT에서 0.1.6-SNAPSHOT으로 증가했습니다. CHANGELOG가 ## [Unreleased] 아래에 새로운 항목들을 올바르게 추가했습니다.

결론

블로킹 이슈가 없습니다. 이 PR은 명시된 호환성 목표를 충족하고 문서를 올바르게 업데이트합니다.

Reviewed by Z.ai GLM via Claude Code Action

@midagedev
midagedev merged commit 7e05c1c into main May 9, 2026
11 checks passed
@midagedev
midagedev deleted the codex/release-compat-features branch May 9, 2026 10:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add release compatibility features for Java 0.1.6

1 participant