* feat: use data version from master while sync slave and fix delete config while sync
Change-Id: I42b2e7b1acc6836d3c90973801c9defba5f1325c
* fix: assign new version using master while sync slave
Change-Id: I7ec20607a84499fe5a6607763013c59d726aedc3
* feat: allow set dataVersion directly for topic/group config sync
Change-Id: Ic845794350e8bdaa847bdd0ae4b3e40ab1ad6311
* feat: set data version directly while sync from master
Change-Id: I39e78477a5223b578a4ede3e5cb76f04368d1ca3
* test: adjust slave sync test for version
Change-Id: I9e835568912928ddf6e81816095ee3ed8f93afc0
* Add BatchSplittingMetricExporter to prevent OTLP gRPC export failures
When high-cardinality metrics (consumer_group x topic) produce OTLP export
payloads exceeding the gRPC 32MB limit or SLS per-RPC processing limit,
all metrics fail to export. This adds a MetricExporter decorator that:
- Splits large batches of MetricData objects into smaller sub-batches
- Splits single oversized MetricData objects by their internal data points
into multiple smaller MetricData objects (supports all 7 MetricDataType)
- Configurable via BrokerConfig.metricsExportBatchMaxDataPoints (default 1000)
- Fast path with zero overhead when data points are within threshold
- Logs failed batch details for debugging
* fix(metrics): snapshot MetricData points before export to prevent AIOOBE
The OTel SDK's NumberDataPointMarshaler.createRepeated allocates an
array based on points.size() then iterates. If callback threads
concurrently add data points between size() and iteration, an
ArrayIndexOutOfBoundsException occurs. This adds a defensive snapshot
of all data point collections at the start of export(), ensuring
the delegate exporter always receives immutable point collections.
* test(metrics): add unit tests for snapshot defensive copy
- testSnapshotCreatesNewMetricData: verify delegate receives
snapshotted MetricData, not the original reference
- testSnapshotFallsBackToOriginal: verify catch block falls
back to original when snapshot fails (e.g., mock without type)
- testSnapshotPointsAreIndependentCopy: verify the snapshotted
points collection is a separate instance from the original
- Add wildcard (*) subscription support for liteTopic
- Implement consume suspend mechanism with invalid scan count threshold
- Refactor subscriber query interface with SubscriberWrapper for flexible retrieval
- Add wildcard client cache with 30s TTL for performance optimization
- Update related components and enhance test coverage
Change-Id: I4ecaceec7daa2f4364d911437007df98dc49d542
* When IndexRocksDBEnable or TransRocksDBEnable are enabled, we need to take these two offsets into account to accelerate recovery.
* Add UTs
* Refactor the code based on the review comments
* Revert "[ISSUE #8127]Optimize the metric calculation logic of the time wheel"
* Remove useless import
* Refactor Code
* Refactor Code
* Refactor Code
* Refactor Code
* Refactor Code
* Implement accelerated recovery for the file-based ConsumeQueue.
* Implement accelerated recovery for the file-based ConsumeQueue.
Change-Id: Ieac45d0582f2f83d977aeb8e6f5084268b7f8752
* Implement accelerated recovery for the file-based ConsumeQueue.
* Ignore testTruncateCQ UT
---------
Co-authored-by: RongtongJin <user@example.com>
* Fix StoreCheckpoint: set logicsMsgTimestamp only after CQ flush, use logicsMsgTempTimestamp for in-memory storetime
Change-Id: I6085bf6efaef84168ece31d080481717465f2b13
* rename to tmpLogicsMsgTimestamp
Change-Id: Ia65ca06751f765bdc2bf053c58e08789f4b2fb22
---------
Co-authored-by: guyinyou <guyinyou.gyy@alibaba-inc.com>
Problem: The cleanUnusedResource method was cleaning up client long polling requests without returning results to clients, causing client errors.
Solution:
1. Simplified the cleanUnusedResource method to only remove entries with empty request queues
2. Changed cleanup interval from 5 minutes to 3 minutes
Change-Id: If7052ba0d088e68cf654e6b7efafe09f5fa877be