Skip to content

[seekdb][memory] Add main memory module statistics view - #1306

Open
hnwyllmm wants to merge 469 commits into
master.bakfrom
task/2026081400118235536
Open

[seekdb][memory] Add main memory module statistics view#1306
hnwyllmm wants to merge 469 commits into
master.bakfrom
task/2026081400118235536

Conversation

@hnwyllmm

Copy link
Copy Markdown
Member

Task Description

Existing __all_virtual_memory_info / V$OB_MEMORY rely on obmalloc label statistics, making it impossible to intuitively display the memory usage and limits of main modules after obmalloc is removed.

MySQL [oceanbase]> select * from v$ob_memory order by hold desc;
+--------------+-----------+----------+-------------+
| MOD_NAME | HOLD | USED | MEM_LIMIT |
+--------------+-----------+----------+-------------+
| KV_CACHE | 216156320 | 5673024 | 37006867660 |
| PLAN_CACHE | 24867761 | 24867761 | 42949672 |
| MEMSTORE | 20798160 | 20798160 | 1717986918 |
| STORAGE_META | 3416704 | 3147984 | NULL |
| TX_DATA | 2284736 | 2284736 | 858993459 |
| SCHEMA | 2079744 | 1257680 | NULL |
| PS_CACHE | 589872 | 589872 | 21474836 |
| MDS | 476160 | 476160 | 429496729 |
| VECTOR | 2624 | 2624 | 1717986918 |
| SQL_WORKAREA | 0 | 0 | 107374180 |
| DTL | 0 | 0 | NULL |
| TMP_FILE | 0 | 0 | 43524096 |
+--------------+-----------+----------+-------------+
12 rows in set (0.005 sec)

Solution Description

Adjusted __all_virtual_memory_info and V$OB_MEMORY to have four columns: MOD_NAME, HOLD, USED, MEM_LIMIT, fixed to aggregate 12 modules: KV Cache, Plan/PS Cache, MemStore, TX_DATA, MDS, Storage Meta, Schema, Vector, SQL Workarea, DTL, and Tmp File. Added a narrow-scope module getter, preserving the native statistical scope of each module. Modules without a valid limit return NULL, and no default ordering is provided. Migrated existing tests/golden files and cleaned up isolated results and assertions that depended on the old label statistics.

Passed Regressions

  • ob-make ob_server
  • CARGO_NET_OFFLINE=true ob-make seekdb
  • New binary isolated instance verification: 12 rows with unique module names, HOLD >= USED >= 0, MEM_LIMIT NULL rules correct
  • Passed 30 consecutive aggregation self-checks
  • PS_CACHE cross-checked with __all_virtual_ps_stat is consistent
  • No new dedicated mysqltest added; mysqltest was not run locally

Upgrade Compatibility

Directly replaces the old obmalloc virtual table contract, deleting old fields like ctx/label/count. Queries dependent on the old fields need to migrate to the new four-column module aggregation interface.

Other Information

This MR only contains commit 03a64f8fa00; 2 untracked files are not within the review scope. V$OB_MEMORY does not guarantee a default row order.

Release Note

footka and others added 30 commits June 23, 2026 12:23
Co-authored-by: footka <footka@users.noreply.github.com>
…ceanbase#924)

Delete entirely-dead files only; no logic changes (kept files lose just
dangling #include / CMake entries). Each batch verified by release
recompile+link; release/debug/sanity share one source-file set.

- 41 orphan .cpp absent from every active CMake list
- 35 headers with zero #include references
- localtime dead cluster (superseded by ob_time_convert) + 8 orphan
headers from a 2nd fixpoint pass
- 456 dead test files (428 .cpp + 28 .h) built by no target

Verified: release relinks each batch; deploy + login + DDL/DML smoke pass.
Deleted files are outside the release build graph.

Co-authored-by: footka <footka@users.noreply.github.com>
* pl: replace the LLVM ORC-JIT executor with a tree-walking interpreter

Execute PL by walking the resolved ObPLStmt tree (ObPLInterpreter)
instead of JIT-compiling routines with LLVM, and remove the ORC-JIT
code generator and the objit module.

The interpreter dispatches blocks, DECLARE ... DEFAULT, assignment
(including SET @user_var / @@sys_var and obj-access targets such as
a trigger's NEW.col), IF/ELSEIF, CASE, WHILE, LOOP, REPEAT, LEAVE
ITERATE, DO, embedded SQL, RETURN (with deep-copied results), cursors
(DECLARE/OPEN/FETCH/CLOSE), exception handling (DECLARE HANDLER
SIGNAL, completion conditions), PRAGMA INTERFACE routines, and nested
CALL with OUT/INOUT copy-back. Loops poll for KILL and query/transaction
timeout at the same cadence the JIT used. It passes the full PL
mysqltest suite.

* Remove the remaining LLVM-JIT code and fix code affected by removing Oracle mode

* fix(build): re-supply oblib zstd/lz4 objects to liboceanbase.so after removing objit

Removing the LLVM-JIT dropped objit from the shared oceanbase lib's link line.
objit linked oblib(STATIC) -- which is built from oblib_extra_objects -- and was
the only path bringing ObZstdWrapper (and lz4) into liboceanbase.so. Without it the
shared lib has undefined ObZstdWrapper symbols, so every unittest that links it
fails under lld's --no-allow-shlib-undefined.

Add ${oblib_extra_objects} to the shared lib's --whole-archive group to supply them
directly, restoring what objit used to bring in transitively.

---------

Co-authored-by: hnwyllmm <hnwyllmm@users.noreply.github.com>
Execute PL by walking the resolved ObPLStmt tree (ObPLInterpreter)
instead of JIT-compiling routines with LLVM, and remove the ORC-JIT
code generator and the objit module.

The interpreter dispatches blocks, DECLARE ... DEFAULT, assignment
(including SET @user_var / @@sys_var and obj-access targets such as
a trigger's NEW.col), IF/ELSEIF, CASE, WHILE, LOOP, REPEAT, LEAVE
ITERATE, DO, embedded SQL, RETURN (with deep-copied results), cursors
(DECLARE/OPEN/FETCH/CLOSE), exception handling (DECLARE HANDLER
SIGNAL, completion conditions), PRAGMA INTERFACE routines, and nested
CALL with OUT/INOUT copy-back. Loops poll for KILL and query/transaction
timeout at the same cadence the JIT used. It passes the full PL
mysqltest suite.
* Avoid periodic snapshot gc scn table updates

* WIP: record glibc fragmentation investigation changes

* Use mmap for protected stack allocation

* Remove temporary memory diagnostics

* Revert CSFetcher interval change

* Revert checkpoint CS min dep LSN cache

* Revert snapshot GC interval change

* revert RELOAD_INTERVAL

* Revert CoStack mmap allocation

* Revert CoStack mmap allocation

---------

Co-authored-by: hnwyllmm <hnwyllmm@users.noreply.github.com>
Co-authored-by: wangyunlai.wyl <wangyunlai.wyl@oceanbase.com>
* Optimize raw shared object writer buffer lifetime

* Refactor shared object writer buffer lifecycle

* Remove unused shared object cross block path

---------

Co-authored-by: hnwyllmm <hnwyllmm@users.noreply.github.com>
…ts (oceanbase#930)

Remove cross-TU duplicate template instantiation and serial unity stragglers
in the vectorized encode/decode hot paths (coverage build)
- encoding: move the vector-decode dispatcher/wrapper explicit instantiations
out of ob_vector_decode_util.h into extern template + dedicated ALONE
definition TUs (locator groups A/B/C). encoding1 unity 455s -> 53s
area long-tail 455s -> 168s.
- cs_encoding: move the two heavy stream vector decoders to ALONE so they
compile in parallel instead of serializing in one unity. 342s -> 190s.
- ObHashPartInfrastructureVec: sink the header explicit instantiations into
ob_hp_infras_vec_op.cpp (extern template), de-duping across the vec op TUs.

Pure compile-time refactor: no generated-code/runtime change, debug and
coverage flags untouched. Full clean build links with 0 undefined refs.

Co-authored-by: footka <footka@users.noreply.github.com>
…nbase#939)

Squash of 572 commits since 1b2db1dd. Dissolve the multi-tenant
framework (ObMultiTenant/MTL) into the global module provider
share::g_mp; eliminate tenant_id across schema/SQL/storage; make all
unittests compile and pass; move campaign tooling out of git.

Co-authored-by: footka <footka@users.noreply.github.com>
…on (oceanbase#940)

* chore: remove inner table build artifacts and add to .gitignore

* feat(build): auto-generate inner table files with CMake

---------

Co-authored-by: hnwyllmm <hnwyllmm@users.noreply.github.com>
Co-authored-by: hnwyllmm <hnwyllmm@users.noreply.github.com>
… fix tests (oceanbase#946)

src: remove GV$/V$ dual-name views, ObMultiTenantOperator, tenant-named inner
tables, dead RPC arg structs; inline ObTenantConfigGuard/TENANT_CONF -> GCONF;
trim dead multi-tenant schema code.

test: fix farm mysqltest failures (memstore/parameter_stat table redirects
golden re-records, drop already-deleted cases from psmalltest/config lists)
and unittest build (add ob_tenant_base.h include, ObTenantConfigGuard -> GCONF).

Co-authored-by: footka <footka@users.noreply.github.com>
* fix pl calling in embed mode

* delete some unused macro build_embed_mode

---------

Co-authored-by: hnwyllmm <hnwyllmm@users.noreply.github.com>
Co-authored-by: ep-12221 <ep-12221@users.noreply.github.com>
… fix tests

src: remove GV$/V$ dual-name views, ObMultiTenantOperator, tenant-named inner
tables, dead RPC arg structs; inline ObTenantConfigGuard/TENANT_CONF -> GCONF;
trim dead multi-tenant schema code.

test: fix farm mysqltest failures (memstore/parameter_stat table redirects
golden re-records, drop already-deleted cases from psmalltest/config lists)
and unittest build (add ob_tenant_base.h include, ObTenantConfigGuard -> GCONF).
…ute_plan (oceanbase#947)

Move PX admission from open_plan to do_open_plan right before execute_plan (after
open-phase pre-execution work like direct-load's create_hidden_table), for all plans.
Previously PX was reserved at open_plan and held idle through create_hidden_table's
same-table DDL conflict retry, starving the conflicting index build that also needs
PX -- a circular hold-and-wait. Admitting right before parallel execution keeps the
reservation tight to actual use; the admission_acquired guard keeps the admit
idempotent across the txn-set-violation retry loop; release is unchanged.

Co-authored-by: footka <footka@users.noreply.github.com>
* [seekdb][lib] fix lbt addr2line for non-PIE executables

* [seekdb][lib] simplify lbt offset handling for non-PIE build

* fix init deadlock

---------

Co-authored-by: hnwyllmm <hnwyllmm@users.noreply.github.com>
* fix compile in non unity mode

* Remove table API remnants

* Remove reserved tracepoint placeholders

* Remove backup and physical restore remnants

* Merge latest origin/master

* refresh

* Remove restored tenant compatibility leftovers

* Merge latest origin/master

* delete unused code

* revert cached_catalog_meta

* fix compile bug

* revert parser

* Fix unittest and parameter_data_type cleanup fallout

---------

Co-authored-by: hnwyllmm <hnwyllmm@users.noreply.github.com>
Co-authored-by: ep-12221 <ep-12221@users.noreply.github.com>
Consolidate the CI pipeline migration from farm2 into GitLab CI as a single clean commit for MR review.

Co-authored-by: hnwyllmm <hnwyllmm@users.noreply.github.com>
- Drop BOLT entirely: do_bolt_opt, perf-*.fdata, and all ENABLE_BOLT/
OB_ENABLE_BOLT wiring in build.sh, Env.cmake, observer CMakeLists, CLOSE_SOURCES.
- Name the observer executable 'seekdb' and link it directly. The old design
linked 'observer_without_bolt' then 'mv'-ed it to 'seekdb', deleting the link
output every build and forcing a full relink on every incremental make.
- Replace multi-MB stale AutoFDO/hotfunc profiles with tiny valid placeholders
so perf/package builds still exercise the flags with no real effect.

Co-authored-by: footka <footka@users.noreply.github.com>
Co-authored-by: hnwyllmm <hnwyllmm@users.noreply.github.com>
footka and others added 28 commits August 12, 2026 22:59
…e#1285)

## Task Description
This change addresses a regression introduced by a previous commit that
removed retry logic for transient failures during tablet autoincrement
operations.

## Solution Description
The regression was introduced by commit b1013d2d ("Trim unsupported
seekdb features"), which replaced the RPC sequence-cache fetch with a
local service and inadvertently dropped the existing retry loop. This
fix restores the retry mechanism for transient failures in the tablet
autoincrement process.

## Passed Regressions

## Upgrade Compatibility

## Other Information

## Release Note
Fix: Restore retry logic for transient failures during tablet
autoincrement operations, addressing a regression introduced by a
previous code change.

Co-authored-by: footka <footka@users.noreply.github.com>
## Task Description
This MR fixes three issues related to seekdb restart and replay
failures:
1. Server runtime composite schema uses `OB_CORE_SCHEMA_VERSION`.
2. Old redo logs no longer roll back the transaction context (`tx ctx`)
restored by checkpoint.
3. Checkpoint recovery for `checksum base` and `SCN`.

## Solution Description
1. Modified the server runtime composite schema logic to correctly
utilize `OB_CORE_SCHEMA_VERSION`.
2. Adjusted the redo log replay mechanism to prevent old redo logs from
interfering with transaction contexts restored from a checkpoint.
3. Fixed the checkpoint recovery process to properly handle `checksum
base` and `SCN`.

## Passed Regressions
- Native Bazel `storage_tests`:
  - `TestObTxMisc.*`
  - `TestTxCallbackList.*`
- Original PDML data: Successfully performed 5 consecutive full restarts
with the ability to listen and execute SQL.

## Upgrade Compatibility

## Other Information
Related Dima work item:
https://project.alipay.com/workItem?workItemId=2026080800118095756

## Release Note
Fixed seekdb restart replay failures by correcting schema version usage,
preventing old redo logs from rolling back checkpoint-restored
transaction contexts, and fixing checkpoint recovery for checksum base
and SCN.

---------

Co-authored-by: footka <footka@users.noreply.github.com>
Use the source LS checkpoint and aligned PALF metadata as the copied SSTable replay baseline. Deriving a global maximum from tablet SSTables can skip logs for tablets with older persisted checkpoints.
## Task Description
##### 1. Restore standby database capability
##### 2. Reference the asymmetric role switching model of PostgreSQL
physical standby to simplify implementation complexity

- PRIMARY -> STANDBY: First, close writes online and persist the target
role, which takes effect after restart.
- STANDBY -> PRIMARY: In-process one-way Promotion, no restart required,
standby's read-only service is not interrupted.
- External orchestration is responsible for node selection, command
execution, traffic switching, source configuration, stopping, and
restarting.
- The kernel is responsible for write isolation, switch boundaries, log
catch-up, role persistence, and startup recovery.
- In case of switch failure, it is preferable to have no primary
temporarily than to allow two writable primaries.

## Solution Description

## Passed Regressions

## Upgrade Compatibility

## Other Information

## Release Note

---------

Co-authored-by: footka <footka@users.noreply.github.com>
…ceanbase#1288)

## Task Description

## Solution Description

## Passed Regressions

## Upgrade Compatibility

## Other Information
- Related links:
-
[DIMA-2026081000118135850](https://project.alipay.com/workItem?workItemId=2026081000118135850)

## Release Note

Co-authored-by: footka <footka@users.noreply.github.com>
## Task Description
seekdb initializes the logger with `no_redirect_flag=true`. As a result,
stdout and stderr are not redirected to `seekdb.log`. In daemon mode,
direct writes to these file descriptors go to `/dev/null` and diagnostic
output can be lost.

## Solution Description
Initialize the server logger with `no_redirect_flag=false`. ObLogger
then redirects `STDOUT_FILENO` and `STDERR_FILENO` to `log/seekdb.log`
using `dup2`, and preserves the redirection when the log file is
reopened or rotated.

## Passed Regressions
- Full Release build: `./build.sh release --make -j8`
- Started a temporary seekdb instance with `--nodaemon`.
- Verified `/proc/<pid>/fd/1`, `/proc/<pid>/fd/2`, and `seekdb.log` had
the same device and inode.
- Wrote distinct stdout and stderr markers through the process
descriptors and verified both markers in `seekdb.log`.

## Upgrade Compatibility
No storage format, protocol, configuration, or upgrade compatibility
impact. Only the destination of stdout and stderr after logger
initialization changes.

## Other Information
This MR contains one commit: `54e8ffa3d15`. No unrelated commits or
files are included.

## Release Note

Co-authored-by: hnwyllmm <hnwyllmm@users.noreply.github.com>
## Task Description

## Solution Description

## Passed Regressions

## Upgrade Compatibility

## Other Information

## Release Note

---------

Co-authored-by: footka <footka@users.noreply.github.com>
…#1291)

## Task Description
The issue was introduced by commit `8e2b24ff01af`, which stopped the
commit retry scheduler from waiting for the final asynchronous callback
after an initial commit request was accepted.

## Solution Description

## Passed Regressions

## Upgrade Compatibility

## Other Information

## Release Note

Co-authored-by: footka <footka@users.noreply.github.com>
## Task Description
DBMS_STATS internal SQL can request a Degree of Parallelism (DOP) higher
than `parallel_servers_target`. The existing PX admission path would
wait unless the complete request could be satisfied or no PX query was
running. Under sustained concurrent PX traffic, smaller requests could
repeatedly consume released workers and delay the large request until
query timeout.

## Solution Description
Determine the admitted worker count once before execution from the
currently available PX quota. Pass the plan's minimum worker count into
the target monitor, admit `min(requested, available)` workers when that
count satisfies the minimum, and otherwise keep waiting. Existing DFO
assignment proportionally downgrades the query to the admitted count,
and the worker count remains fixed for that execution.

## Passed Regressions
- `./build.sh release --init`
- `ob-make ob_sql`
- `git diff --check`

## Upgrade Compatibility
No schema, configuration, or external API compatibility impact. The
change only adjusts the internal PX admission decision.

## Other Information
This MR contains one commit: `076ad53ea7d`. The local untracked file
named `2` is unrelated and is not included.

## Release Note

---------

Co-authored-by: hnwyllmm <hnwyllmm@users.noreply.github.com>
Co-authored-by: wangyunlai.wyl <wangyunlai.wyl@oceanbase.com>
## Task Description
1. Restore standby database capability.
2. Reference the PostgreSQL physical standby model, adopting an
asymmetric role switch model to simplify implementation complexity.
- PRIMARY -> STANDBY: First, disable writes online and persist the
target role; the change takes effect after restart.
- STANDBY -> PRIMARY: In-process one-way promotion, no restart required,
read-only service on the standby is not interrupted.
- External orchestration is responsible for node selection, command
execution, traffic switching, source configuration, stopping, and
restarting.
- The kernel is responsible for write isolation, switch boundaries, log
catch-up, role persistence, and startup recovery.
- In case of a switch failure, it is preferable to have no primary
temporarily rather than allowing two writable primaries.

## Solution Description

## Passed Regressions

## Upgrade Compatibility

## Other Information

## Release Note
-
[DIMA-2026081000118111905](https://project.alipay.com/workItem?workItemId=2026081000118111905)

---------

Co-authored-by: footka <footka@users.noreply.github.com>
## Task Description

## Solution Description

## Passed Regressions

## Upgrade Compatibility

## Other Information

## Release Note

Co-authored-by: footka <footka@users.noreply.github.com>
## Task Description
This change addresses an issue introduced by a previous commit that
removed unsupported distributed features. The fix ensures compatibility
by reverting to the legacy VSAG serialization format for vector data.

## Solution Description
The implementation involves modifying the vector serialization logic to
use the previous (legacy) format for VSAG (Vector Storage and Access
Graph) instead of the new format introduced in the problematic commit.
This rollback restores functionality that was broken by the removal of
unsupported distributed features.

## Passed Regressions

## Upgrade Compatibility

## Other Information
- Issue introduced by commit: f7387fb2520509b3772d57cb0d9d51b47fe2d3f0
("refactor: remove unsupported distributed features")
- Related internal link:
[DIMA-2026081100118155873](https://project.alipay.com/workItem?workItemId=2026081100118155873)

## Release Note
Fix: Restored compatibility by using the legacy VSAG serialization
format for vector data, addressing a regression introduced when removing
unsupported distributed features.

Co-authored-by: footka <footka@users.noreply.github.com>
…#1297)

## Task Description
The issue was introduced by commit `8e2b24ff01af`, which stopped the
commit retry scheduler from waiting for the final asynchronous callback
after an initial commit request was accepted.

## Solution Description

## Passed Regressions

## Upgrade Compatibility

## Other Information
- Related links:
-
[DIMA-2026081100118160123](https://project.alipay.com/workItem?workItemId=2026081100118160123)

## Release Note

Co-authored-by: footka <footka@users.noreply.github.com>
…nbase#1298)

## Task Description
Defer the loading of tablet macro information for truncated metadata to
optimize performance.

## Solution Description
Modified the storage layer logic to postpone the loading of macro block
information associated with truncated tablet metadata until it is
actually required, rather than loading it eagerly during initialization
or certain operations.

## Passed Regressions

## Upgrade Compatibility

## Other Information
- **Related Issue:**
[DIMA-2026081200118181890](https://project.alipay.com/workItem?workItemId=2026081200118181890)

## Release Note
Performance optimization: Tablet macro information for truncated
metadata is now loaded lazily, improving startup and operational
performance in scenarios with significant metadata truncation.

Co-authored-by: footka <footka@users.noreply.github.com>
## Task Description
Transaction log replay could encounter a null-pointer SIGSEGV in
T1_ReplaySrv0. The issue was that `MdsFactory::deep_copy_buffer_ctx`
compared the recursive tuple index directly with the sparse binding type
ID. For MdsCtx, the binding type ID is 0 while its tuple index is 1,
causing the function to incorrectly return success without allocating a
copied context.

## Solution Description
Modified the traversal logic to iterate through every registered
BufferCtx tuple entry and match the source context using the
`BufferCtxBindingTypeId`. Added a success postcondition that rejects a
null copied context. A regression test was also added to cover the
MdsCtx binding-ID/tuple-index mismatch scenario.

## Passed Regressions
- ob-make test_tablet_create_mds_ctx
- test_tablet_create_mds_ctx: 2/2 cases passed
- The new regression case reproduced the `copied_ctx == nullptr`
condition before the fix and passed after the fix.

## Upgrade Compatibility
No serialization format or public API changes. This fix only corrects
the runtime BufferCtx type lookup logic and adds a defensive error
check.

## Other Information
- This MR contains only commit 3c338fcacea.
- Core-test G4890001028 is running.
- Local untracked files are not included.
- Related internal link: DIMA-2026080700118077486

## Release Note

---------

Co-authored-by: hnwyllmm <hnwyllmm@users.noreply.github.com>
## Task Description
SeekDB is preparing the 1.4.0 release, while the project, Bazel package
metadata, server/data current version definitions, and package examples
still report 1.3.0.

## Solution Description
- Upgrade the CMake project version from to .
- Upgrade Bazel PACKAGE_STRING and PACKAGE_VERSION to .
- Upgrade SERVER_CURRENT_VERSION and DATA_CURRENT_VERSION to .
- Update seekdb package command examples from 1.3.0 to 1.4.0.

## Passed Regressions
- `git diff --check`
- Bazel target `//src/observer:seekdb` built successfully after applying
a local workaround for a pre-existing OBLib header inventory dependency
issue.
- `build_bazel/bin/src/observer/seekdb --version` reports `OceanBase
seekdb `.

## Upgrade Compatibility
This change updates release and data version metadata to . It does not
change the minimum compatible version definitions.

## Other Information
- This MR contains exactly one commit: `6863dd66d35 upgrade version to
1.4.0`.
- The local uncommitted OBLib header inventory workaround used for Bazel
validation is intentionally excluded from this MR because it fixes an
unrelated pre-existing build dependency issue.
- Related links: DIMA-2026081000118117368

## Release Note

---------

Co-authored-by: hnwyllmm <hnwyllmm@users.noreply.github.com>
## Task Description
DBMS_STATS internal SQL can request a Degree of Parallelism (DOP) higher
than `parallel_servers_target`. The existing PX admission path would
wait unless the complete request could be satisfied or no PX query was
running. Under sustained concurrent PX traffic, smaller requests could
repeatedly consume released workers and delay the large request until
query timeout.

## Solution Description
Determine the admitted worker count once before execution from the
currently available PX quota. Pass the plan's minimum worker count into
the target monitor, admit `min(requested, available)` workers when that
count satisfies the minimum, and otherwise keep waiting. Existing DFO
assignment proportionally downgrades the query to the admitted count,
and the worker count remains fixed for that execution.

## Passed Regressions
- `./build.sh release --init`
- `ob-make ob_sql`
- `git diff --check`

## Upgrade Compatibility
No schema, configuration, or external API compatibility impact. The
change only adjusts the internal PX admission decision.

## Other Information
This MR contains one commit: 076ad53ea7d. The local untracked file named
`2` is unrelated and is not included.

## Release Note

---------

Co-authored-by: hnwyllmm <hnwyllmm@users.noreply.github.com>
Co-authored-by: wangyunlai.wyl <wangyunlai.wyl@oceanbase.com>
…nbase#1302)

## Task Description
Concurrent DDL such as TRUNCATE can replace a table's tablet after
GATHER_SCHEMA_STATS has obtained its schema. The block-count estimation
then accesses the stale tablet id and returns
OB_TABLET_NOT_EXIST(-4725), which is propagated to the caller and causes
ddltest_duomo_lite strict failure.

## Solution Description
When prepare_gather_stats returns OB_TABLET_NOT_EXIST before statistics
are written, report that the runtime schema needs refreshing.
GATHER_SCHEMA_STATS refreshes the schema guard, rebuilds the current
table's statistics parameters, and retries the table once. After
refresh, the existing OB_TABLE_NOT_EXIST handling continues to skip a
table that was actually dropped. The retry is limited to one attempt to
avoid an unbounded loop.
A debug-sync point and mysqltest reproduce the race deterministically by
truncating a table immediately before block-count estimation.

## Passed Regressions
- Full Bazel build passed.
- ddl.gather_schema_stats_truncate_retry deterministic mysqltest passed.
- ddltest_duomo_lite vector and hybrid phases ran for 600 seconds each
and both strict summaries passed. All 8 GATHER_SCHEMA_STATS calls
succeeded, with no OB_TABLET_NOT_EXIST(-4725).

## Upgrade Compatibility
No on-disk format, system-table schema, SQL syntax, or protocol change.

## Other Information
This MR contains one commit. The unrelated untracked file named 2 is
excluded.

## Release Note

Co-authored-by: hnwyllmm <hnwyllmm@users.noreply.github.com>
## Task Description
Downgrade expected stability logs from a higher severity level (likely
`ERROR` or `INFO`) to `WARN`.

## Solution Description
Modified the log level for specific, expected stability-related log
messages from a higher severity to `WARN` to reduce log noise and better
reflect their non-critical nature.

## Passed Regressions

## Upgrade Compatibility

## Other Information

## Release Note
Fixed an issue where expected stability events were logged at an
inappropriately high severity level (e.g., ERROR/INFO). These logs are
now correctly emitted at the WARN level.

Co-authored-by: footka <footka@users.noreply.github.com>
## Task Description

## Solution Description

## Passed Regressions

## Upgrade Compatibility

## Other Information

## Release Note

Co-authored-by: footka <footka@users.noreply.github.com>
)

## Task Description

## Solution Description

## Passed Regressions

## Upgrade Compatibility

## Other Information

## Release Note

Co-authored-by: footka <footka@users.noreply.github.com>
## Task Description
Validate the SQLite guard mechanism before performing transaction
cleanup to prevent potential issues during the cleanup process.

## Solution Description


## Passed Regressions


## Upgrade Compatibility


## Other Information


## Release Note

Co-authored-by: footka <footka@users.noreply.github.com>
@hnwyllmm

Copy link
Copy Markdown
Member Author

The mapping Dima issue is to add memory statistics views for each major memory module.

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.

5 participants