Repository navigation
fix(runtime): make concurrent OceanBase replica startup idempotent - #1957
Draft
Tsukikage7 wants to merge 2 commits into
Draft
Tsukikage7 wants to merge 2 commits into
Tsukikage7 wants to merge 2 commits into
Conversation
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Which issue or RFC does this PR close?
Related to #1609. Supplies the runtime cold-start dependency for the API/background Helm deployment in #1854; does not close either item.
Rationale for this change
Concurrent API/background replicas can race between schema existence checks and DDL, or lose a static authorization preset's first unique-key insert. On OceanBase CE 4.4.2.1, native VECTOR creation can additionally return error 1235 even with IF NOT EXISTS while another replica owns the column reservation and its logical index metadata is still settling.
What changes are included in this PR?
pc_atomic_memory_current).The branch includes current master through 329b4be, including upstream cancellation cleanup. The PR's net change is 11 source/test files; no Helm manifests, credentials or acceptance artifacts are included.
Are there any user-facing changes?
Concurrent replicas can initialize a fresh external OceanBase database reliably, while unusable native indexes still prevent startup. No public API or persisted-format change is introduced, and existing SQLite recorder retries are unchanged. Real concurrent cold-start acceptance covered OceanBase CE 4.4.2.1. The final head also passed the CI clean-migration suite on OceanBase CE 4.3.5.6; this is a separate migration/authorization/vector regression scope. Seekdb and other versions have not received concurrent cold-start acceptance for this patch.
How was this change tested?
On final head c8a0730:
uv run --locked python -m pytest tests/builtin/persistence/test_native_schema_creation.py tests/builtin/persistence/test_vector_initialization.py tests/builtin/persistence/test_topic_memory_oceanbase.py tests/test_access_bootstrap.py tests/builtin/persistence/test_sqlite_profile.py tests/builtin/runtime/test_model_usage_recorder.py -q: 87 passed, 1 skipped (no live database configured in this local run).make check: passed, includinguv run --locked prek run -a, both type-check scopes and 49 integration-manifest tests.make docs-test: passed; 916 public pages and their internal links verified.uv run --locked python -m pytest -q: 5060 passed, 430 skipped, 4 deselected, 1 failed in 20m43s. The sole failure is the existingtests/builtin/test_native_code.py::test_credentials_and_symlinks_are_not_readfixture attempting togit add .envunder the host global Git ignore rule. The exact test passed separately withGIT_CONFIG_GLOBAL=/dev/null; user Git configuration and test source were unchanged.action_required, awaiting maintainer authorization; the fork run does not replace upstream required checks.Separate real-backend acceptance was completed before the latest master merge, using the final six production-file patch on base 2058325. These production files are identical on this PR head:
Limit: the Kubernetes run used a temporary source fixture, not a newly published application image. Published-image pull/entrypoint and the unmodified chart against that image remain unverified. The real-backend and Kubernetes acceptance has not been rerun after the latest master merge; the cleaned environment was not recreated.
AI usage statement
OpenAI Codex assisted with implementation and validation. The exact model identifier was not recorded in the local task evidence.