)]}'
{
  "log": [
    {
      "commit": "a4568b6e90c984ecbf7531679473eaf6ae983b7e",
      "tree": "1d5ecadd87fa9d2d39088d9bcda3d4cfca64e0bc",
      "parents": [
        "b702764f5644c0ff5a5e223e7cfea0e2df8edf4d"
      ],
      "author": {
        "name": "d-wang-commit",
        "email": "d.wang.commit@gmail.com",
        "time": "Tue Nov 10 22:52:43 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Nov 10 22:52:43 2026 +0800"
      },
      "message": "Reject RegionGroup policy hot reload on mixed-version ConfigNodes (#19204)\n\nCheck registered ConfigNode versions and builds before applying either policy.\nKeep internal follower application and unrelated configuration updates unchanged."
    },
    {
      "commit": "b702764f5644c0ff5a5e223e7cfea0e2df8edf4d",
      "tree": "121beb8bb3bd97e5c8e0282fa2a7619221ef6db4",
      "parents": [
        "4b94bc62e29141058b51497fdcc3c60d6a8652aa"
      ],
      "author": {
        "name": "shuwenwei",
        "email": "55970239+shuwenwei@users.noreply.github.com",
        "time": "Tue Nov 10 19:30:52 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Nov 10 19:30:52 2026 +0800"
      },
      "message": "Reject UDFs in table-model UPDATE statements (#19196)"
    },
    {
      "commit": "4b94bc62e29141058b51497fdcc3c60d6a8652aa",
      "tree": "10e7b7d272cdf411e49504e58cc5522389fcbddd",
      "parents": [
        "330832abdc2a36c332b5b724d93e519b52eff4ac"
      ],
      "author": {
        "name": "Caideyipi",
        "email": "87789683+Caideyipi@users.noreply.github.com",
        "time": "Tue Nov 10 17:57:24 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Nov 10 17:57:24 2026 +0800"
      },
      "message": "[Test] Fix flaky LOAD restart and teardown ITs (#19103)\n\n* [Test] Skip unsealed TsFiles in LOAD restart snapshots\n\n* Fix LOAD cluster IT cleanup race\n\n* Strengthen LOAD cleanup race regression coverage\n\n* IT: verify database reuse after teardown cleanup"
    },
    {
      "commit": "330832abdc2a36c332b5b724d93e519b52eff4ac",
      "tree": "b6a260948fdc1f3c4a4030227e45a8b85b47dc4a",
      "parents": [
        "9e701208a888d361a98c55259da632c3814ab5b8"
      ],
      "author": {
        "name": "Caideyipi",
        "email": "87789683+Caideyipi@users.noreply.github.com",
        "time": "Tue Nov 10 17:47:47 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Nov 10 17:47:47 2026 +0800"
      },
      "message": "Fix Pipe memory allocation for five-part DataNode proportions (#19202)"
    },
    {
      "commit": "9e701208a888d361a98c55259da632c3814ab5b8",
      "tree": "42b7d9ac6036ef5985a9395431247164e11566ad",
      "parents": [
        "e92670626716bae9215aac0259a554aae3e59274"
      ],
      "author": {
        "name": "Caideyipi",
        "email": "87789683+Caideyipi@users.noreply.github.com",
        "time": "Tue Nov 10 17:03:27 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Nov 10 17:03:27 2026 +0800"
      },
      "message": "Fix active load retries while table schema regions recover (#19201)"
    },
    {
      "commit": "e92670626716bae9215aac0259a554aae3e59274",
      "tree": "a70135fc63e7037bf382f472048d4ff25cf91c5c",
      "parents": [
        "050fcb5aa98bd5e25019d60b77073998e4df3fc9"
      ],
      "author": {
        "name": "Caideyipi",
        "email": "87789683+Caideyipi@users.noreply.github.com",
        "time": "Tue Nov 10 17:02:42 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Nov 10 17:02:42 2026 +0800"
      },
      "message": "Fix subscription timeout cleanup during DataNode removal (#19197)\n\n* Avoid subscription timeout cleanup on retiring DataNodes\n\n* Preserve subscription consumers across DataNode removal rollback\n\n* Latch subscription timeout state on DataNode removal"
    },
    {
      "commit": "050fcb5aa98bd5e25019d60b77073998e4df3fc9",
      "tree": "d83123ca742c52d6202039f933eb3f19d81f1a31",
      "parents": [
        "135c78461a58e544981e5a2ae2a75ca85faf40b7"
      ],
      "author": {
        "name": "Weihao Li",
        "email": "60659567+Wei-hao-Li@users.noreply.github.com",
        "time": "Tue Nov 10 16:10:15 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Nov 10 16:10:15 2026 +0800"
      },
      "message": "Parallelize process of set semantic TVF when the conetent of partition keys were same (#19155)"
    },
    {
      "commit": "135c78461a58e544981e5a2ae2a75ca85faf40b7",
      "tree": "a3b04d759275b92544c4330c4ecdae85cbe041f6",
      "parents": [
        "868f2c6e03f39a1d1afc4d7aaf63caba4e338ccd"
      ],
      "author": {
        "name": "Caideyipi",
        "email": "87789683+Caideyipi@users.noreply.github.com",
        "time": "Tue Nov 10 12:25:10 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Nov 10 12:25:10 2026 +0800"
      },
      "message": "Fix resetting maximum numeric table TTL to INF (#19183)\n\n* Fix resetting maximum numeric table TTL to INF\n\n* Fix WALNodeTest listener tracking\n\n* Align TTL default reset test with INF normalization"
    },
    {
      "commit": "868f2c6e03f39a1d1afc4d7aaf63caba4e338ccd",
      "tree": "f559d4e06e7bdbc2036cbb43390d341150749d09",
      "parents": [
        "250f85387f5a8cabb65f488473340a37c76eb2ec"
      ],
      "author": {
        "name": "Zhenyu Luo",
        "email": "zhenyu@apache.org",
        "time": "Tue Nov 10 12:20:45 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Nov 10 12:20:45 2026 +0800"
      },
      "message": "Fix LOAD splitting of sparse batched aligned chunks (complete #19032) (#19184)\n\n* Fix LOAD splitting of sparse batched aligned chunks\n\n* Fix LOAD splitting of sparse batched aligned value chunks\n\nThe LOAD splitter re-encodes the standalone value chunks of a batched\naligned table with a ValueChunkWriter, and the chunks it builds have to\nkeep the row positions and the page positions of the time chunks they\nbelong to.\n\n- Write every row, nulls included, with its real timestamp, so that the\n  value page bitmap keeps one position per row and the statistics cover\n  the non-null values only.\n- Keep one page per page slot of the time chunk, even when the page is\n  all null: the aligned reader pairs the pages of a value chunk with the\n  pages of its time chunk by position, so a missing page shifts every\n  later page onto the timestamps of an earlier one.\n- Normalize the header of an empty page. The page writer decides on the\n  presence of the page statistics instead of the page size, so the\n  statistics carried by the placeholder page of an empty chunk would be\n  written into a page that has no data and the reader would parse a\n  phantom page out of it.\n- Choose between the mirrored layout and the zero-page layout of an\n  all-null column with one rule - the counterpart of the rule the base\n  class applies to the chunks it writes itself - instead of conflating\n  \"has a non-null value\" with \"has rows of this partition\".\n\nCover the cases the previous tests missed: a copied page that carries\ndata followed by a decoded page, an all-null page behind the pages that\ncarry data, and an assertion that every emitted chunk declares exactly\nthe number of bytes it carries.\n\nBased on the branch of apache/iotdb#19032.\n\n* Add an IT that loads a sparse batched aligned TsFile\n\nThe LOAD splitter re-encodes the value chunks of a batched aligned chunk\ngroup when the file crosses time partitions. The new IT builds such a\nfile with the compaction layout - one time chunk and two value chunks,\nthe second one behind the time chunk - whose rows include null values\nand an entirely null page, loads it, and checks that every row keeps its\ntimestamp and its value.\n\nThe file spans three time partitions of the interval the test configures,\nso LOAD decodes and splits it instead of storing it as it is.\n\n* Use the recorded row count when deciding the chunk layout\n\nPageBuffer.satisfiedLength already holds the number of rows the page\ncontributes to the time partition, so the layout decision no longer\nscans the decoded timestamps a second time.\n\n---------\n\nCo-authored-by: Caideyipi \u003c87789683+Caideyipi@users.noreply.github.com\u003e"
    },
    {
      "commit": "250f85387f5a8cabb65f488473340a37c76eb2ec",
      "tree": "af96c0c50e53190103a8457acdff9f9d185ddead",
      "parents": [
        "b2929d321a329ff629ef25f8e6ed8dec03eeb1b3"
      ],
      "author": {
        "name": "shuwenwei",
        "email": "55970239+shuwenwei@users.noreply.github.com",
        "time": "Tue Nov 10 12:07:22 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Nov 10 12:07:22 2026 +0800"
      },
      "message": "Expose internal client sessions through multiplexed RPC (#19125)"
    },
    {
      "commit": "b2929d321a329ff629ef25f8e6ed8dec03eeb1b3",
      "tree": "fe784f127f1a14049cbc0be65ef5e353a9b9e17b",
      "parents": [
        "08cebbd76c19c9b7df11a7ef1ac14ae5fc13c085"
      ],
      "author": {
        "name": "ZIHAN DAI",
        "email": "99155080+PDGGK@users.noreply.github.com",
        "time": "Tue Nov 10 14:10:50 2026 +1100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Nov 10 11:10:50 2026 +0800"
      },
      "message": "Fix table-model UDFs on TAG/ATTRIBUTE predicates and SHOW/COUNT DEVICES (#19195)\n\nA table scalar UDF creates its IoTDBLocal when the transformer is built,\nwhich needs a factory, a fragment instance id, a query id and a positive\ndeadline. Schema fragments had no deadline, and the COUNT DEVICES filter\ngot none of the four, so any UDF evaluated there failed.\n\nGive schema fragments the same deadline as data fragments, and pass the\nfour values to the COUNT DEVICES filter."
    },
    {
      "commit": "08cebbd76c19c9b7df11a7ef1ac14ae5fc13c085",
      "tree": "2baddcede2b8f44b10a87c59f5b38457fa8d7b40",
      "parents": [
        "d10b69ee10ff393928af2dad9725df41b2c28dfc"
      ],
      "author": {
        "name": "Hongzhi Gao",
        "email": "761417898@qq.com",
        "time": "Tue Nov 10 11:06:24 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Nov 10 11:06:24 2026 +0800"
      },
      "message": "Fix snapshots of deleted TsFile resources during DataNode removal (#19192)\n\n* Fix snapshots of deleted TsFile resources\n\n* Simplify snapshot regression coverage"
    },
    {
      "commit": "d10b69ee10ff393928af2dad9725df41b2c28dfc",
      "tree": "62993c1f0157a46efc10cbc98905fdf6c57e28df",
      "parents": [
        "6db3682ade5a29b1bcb500d5b1e418688d33de3a"
      ],
      "author": {
        "name": "Hongzhi Gao",
        "email": "761417898@qq.com",
        "time": "Tue Nov 10 09:40:11 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Nov 10 09:40:11 2026 +0800"
      },
      "message": "Fix tier folder recovery and DiskFull status after configuration reload (#19161)\n\n* Preserve tier folder slots after disk-full initialization\n\n* Serialize retries of failed tier managers with folder reset\n\n* Keep DiskFull until current directory checks recover\n\n* Add integration coverage for disk-full folder recovery\n\n* Trigger CI rerun\n\n* Trigger CI rerun\n\n* Refresh reloadable folder recovery checks"
    },
    {
      "commit": "6db3682ade5a29b1bcb500d5b1e418688d33de3a",
      "tree": "e4739553264b601b659f34f81ee086be0ce19403",
      "parents": [
        "cd31721c1476b8edd07c4f205acd2fb4e046bc6d"
      ],
      "author": {
        "name": "Caideyipi",
        "email": "87789683+Caideyipi@users.noreply.github.com",
        "time": "Tue Nov 10 09:31:06 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Nov 10 09:31:06 2026 +0800"
      },
      "message": "Preserve accepted table attribute versions across schema fetches (#19134)\n\n* Preserve accepted table attribute versions across schema fetches\n\n* Remove redundant ASM integration-test dependency"
    },
    {
      "commit": "cd31721c1476b8edd07c4f205acd2fb4e046bc6d",
      "tree": "557160ebc6cfcafc1f2175aa46a6eaff9cd771dc",
      "parents": [
        "e6ef8949386288c57aa75c88533f094e44dad14c"
      ],
      "author": {
        "name": "Caideyipi",
        "email": "87789683+Caideyipi@users.noreply.github.com",
        "time": "Mon Nov 09 16:03:49 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Nov 09 16:03:49 2026 +0800"
      },
      "message": "docs: require examples in feature PR descriptions (#19191)\n\n* docs: require examples in feature PR descriptions\n\n* docs: describe bug scenarios in fix PRs"
    },
    {
      "commit": "e6ef8949386288c57aa75c88533f094e44dad14c",
      "tree": "ab9a56550ead63b4304327a140a7c0632753fe86",
      "parents": [
        "36c35f63b6506910b365d6e487cd8ca2700bc5d6"
      ],
      "author": {
        "name": "CritasWang",
        "email": "critas@outlook.com",
        "time": "Mon Nov 09 15:53:18 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Nov 09 15:53:18 2026 +0800"
      },
      "message": "[Tools] Fix misspelled Alias in the import-schema error message (#19138)\n\nThe header validation message of import-schema told users the correct CSV\nformat is \"Timeseries, Alibaba, DataType, Encoding, Compression\", but the\nactual column name is \"Alias\".\n\nThe typo dates back to the tool\u0027s introduction and was carried into the\nChinese message as well. Rename the message constant as well, so that its\nname still derives from the English value as required by the i18n\nnaming convention."
    },
    {
      "commit": "36c35f63b6506910b365d6e487cd8ca2700bc5d6",
      "tree": "fe76f835a495e7e2cbcc6b6a50b5d27fc821f4dd",
      "parents": [
        "947063c37830a6f321e0acedb0fedd6c25311ed3"
      ],
      "author": {
        "name": "Zhenyu Luo",
        "email": "zhenyu@apache.org",
        "time": "Mon Nov 09 14:21:46 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Nov 09 14:21:46 2026 +0800"
      },
      "message": "[Pipe] Release processor worker threads when all subtasks are deregistered (#19140)\n\nThe processor worker loop ran forever, so the idle-timeout of the processor thread pool could never reclaim its threads. After databases were dropped and their pipe tasks deregistered, the Pipe-Processor-Executor-Pool threads therefore stayed alive until the DataNode exited.\n\nWorkers are now started on demand: a worker is submitted to the thread pool only when it is assigned a subtask, and it exits as soon as its last subtask is closed or deregistered. The emptiness check and the running-state transition are guarded by a lifecycle monitor, so a concurrently scheduled subtask is never lost and at most one worker thread runs a worker at a time. A worker is started again when a new subtask is assigned to it, and it also exits when the subtask executor is shut down."
    },
    {
      "commit": "947063c37830a6f321e0acedb0fedd6c25311ed3",
      "tree": "2f0c4d896518e613e961e1128e8dfd9e77602c94",
      "parents": [
        "c5f57e9305e795fbd97d6810f3234aed91a2cf39"
      ],
      "author": {
        "name": "Caideyipi",
        "email": "87789683+Caideyipi@users.noreply.github.com",
        "time": "Mon Nov 09 14:14:56 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Nov 09 14:14:56 2026 +0800"
      },
      "message": "Fix WALNodeTest compilation after explicit WAL rolling (#19189)"
    },
    {
      "commit": "c5f57e9305e795fbd97d6810f3234aed91a2cf39",
      "tree": "cabdc3f5379520dcda20d5ab851b2d6dbe2a454c",
      "parents": [
        "21513cabf68222d4eb05518a151397d955526b60"
      ],
      "author": {
        "name": "Caideyipi",
        "email": "87789683+Caideyipi@users.noreply.github.com",
        "time": "Mon Nov 09 14:10:32 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Nov 09 14:10:32 2026 +0800"
      },
      "message": "Fix test helper JDBC cleanup and Pipe subtask stubbing race (#19160)\n\n* Stub rejected submissions before registering pipe subtasks\n\n* Fix JDBC resource cleanup in non-query test utilities\n\n* Stabilize pipe operation diagnostics IT barriers"
    },
    {
      "commit": "21513cabf68222d4eb05518a151397d955526b60",
      "tree": "0f45e362d3655d478431e2ab9444222354ddf203",
      "parents": [
        "133eadde54fc56e3252e2240044da598e5f827b3"
      ],
      "author": {
        "name": "Caideyipi",
        "email": "87789683+Caideyipi@users.noreply.github.com",
        "time": "Mon Nov 09 12:19:26 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Nov 09 12:19:26 2026 +0800"
      },
      "message": "Preserve subscription progress during consensus leader activation (#19170)\n\n* Prevent subscription progress rollback on leader activation\n\n* Resolve pending subscription progress before atomic activation refresh\n\n* Preserve explicit seek progress during activation refresh\n\n* Preserve subscription progress during activation seeks\n\n* Preserve explicit seeks during activation lookup\n\n* Preserve subscription progress across activation races"
    },
    {
      "commit": "133eadde54fc56e3252e2240044da598e5f827b3",
      "tree": "db3ad952f373562d9351c7a4b53d43afcbf94687",
      "parents": [
        "c6e229aef50608cb67bfb4fd94717d05f4ef3d0f"
      ],
      "author": {
        "name": "Zhenyu Luo",
        "email": "zhenyu@apache.org",
        "time": "Mon Nov 09 12:16:59 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Nov 09 12:16:59 2026 +0800"
      },
      "message": "[Bug] Recognize IoTConsensusV2 class name aliases on ConfigNode (#18989)\n\n* [Bug] Recognize IoTConsensusV2 class name aliases on ConfigNode\n\nConfigNode compared the raw value of data_region_consensus_protocol_class with\nConsensusFactory.IOT_CONSENSUS_V2, while DataNode normalizes the configured value\nthrough ConsensusFactory.normalizeConsensusProtocolClass before using it. When the\nconfiguration used the legacy org.apache.iotdb.consensus.pipe.PipeConsensus name\nor the implementation class name\norg.apache.iotdb.consensus.pipe.IoTConsensusV2, ConfigNode concluded that\nIoTConsensusV2 was not configured and therefore:\n\n- createInitialConsensusPipes() never created the __consensus.* pipes on database\n  creation;\n- checkAndRepairConsensusPipes() returned immediately, so PipeMetaSyncer could\n  never repair missing pipes;\n- RouteBalancer disabled the automatic data region leader balance.\n\nSince the IoTConsensusV2 write path only writes the local state machine, the\nmissing pipes silently degraded the data region replication factor to one: no\nerror was reported and syncLag stayed at zero.\n\nNormalize the value once at the configuration boundary so CONF never holds an\nalias, log the normalization when the configuration file uses an alias, keep the\ncomparison sites and the RouteBalancer cache defensive, and normalize the value\nsent by a joining ConfigNode so a mixed-version cluster is not rejected.\n\n* [ConfigNode] Reject an unrecognized data_region_consensus_protocol_class at startup\n\nConfigNode decides whether it has to create consensus pipes by comparing\ndata_region_consensus_protocol_class with the canonical IoTConsensusV2 class\nname. An unrecognized value therefore silently disables IoTConsensusV2\nreplication: data_replication_factor\u003d2 degrades to a single replica without\nany error, and the pipe based syncLag metric keeps reporting 0.\n\nFail the startup check with a ConfigurationException that lists the accepted\nclasses instead of starting a cluster that cannot replicate.\n\n* [ConfigNode] Reconcile consensus pipes as soon as the pipe count mismatches\n\nThe reconciliation ran on a fixed round cadence, so a region that lost its\nconsensus pipes could stay unreplicated for up to five sync intervals even\nafter the starvation fix made the check reachable again.\n\nProbe the pipe count on every sync round instead: the number of ordered\nreplica pairs over the DataRegion replica sets is exactly the number of\nconsensus pipes IoTConsensusV2 requires, and comparing it with the number of\nexisting consensus pipes neither builds a pipe name nor copies a replica set\n(the new PartitionManager#getReplicaPairCount iterates the partition tables\nin place). A mismatch means at least one region has lost its replication\nchannel, so the full reconciliation runs immediately and keeps running every\nround until the counts match again. Equal counts still trigger the full check\nperiodically, because a same-size but different pipe set cannot be detected\nby counting.\n\nThe probe is skipped entirely when IoTConsensusV2 is not configured, and a\nsingle-replica region expects no pipe at all, so single-replica clusters never\nreport a mismatch.\n\n* [ConfigNode] Tighten comments and document the new tests\n\nKeep production comments to what the code does not already say: the long\nexplanations belonged in the commit messages, not next to the statements.\nGive every new test a short comment stating the scenario it covers and the\nbehaviour it asserts."
    },
    {
      "commit": "c6e229aef50608cb67bfb4fd94717d05f4ef3d0f",
      "tree": "e19a5936a94649cee18ddb7d8ff99b0e267c6db3",
      "parents": [
        "3ec7ab105ff6ad55a201a1cf708933f0c93c15e2"
      ],
      "author": {
        "name": "Caideyipi",
        "email": "87789683+Caideyipi@users.noreply.github.com",
        "time": "Mon Nov 09 11:11:58 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Nov 09 11:11:58 2026 +0800"
      },
      "message": "Prevent deleted values from reappearing after a local LOAD crash (#19136)\n\n* Prevent partial local LOAD installation after process crashes\n\n* Keep committed LOAD successful when source cleanup fails\n\n* Avoid counting converted LOAD mods twice\n\n* Record LOAD mods metrics only after publication\n\n* Align LOAD cleanup tests with source group retention"
    },
    {
      "commit": "3ec7ab105ff6ad55a201a1cf708933f0c93c15e2",
      "tree": "2af90b01435132b20345ab6a864b7d8e4c7747b6",
      "parents": [
        "db0a9b4d756cc2558ca466895590ee58427c2c6c"
      ],
      "author": {
        "name": "Caideyipi",
        "email": "87789683+Caideyipi@users.noreply.github.com",
        "time": "Mon Nov 09 10:53:31 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Nov 09 10:53:31 2026 +0800"
      },
      "message": "Fix WALNode outdated file deletion test (#17921)"
    },
    {
      "commit": "db0a9b4d756cc2558ca466895590ee58427c2c6c",
      "tree": "df8c057e5b765abe4c3fb03c44eb7c06c9dbed93",
      "parents": [
        "29724cd62e8d86a4555f31e8ab1cc407932e2e64"
      ],
      "author": {
        "name": "Caideyipi",
        "email": "87789683+Caideyipi@users.noreply.github.com",
        "time": "Mon Nov 09 09:38:22 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Nov 09 09:38:22 2026 +0800"
      },
      "message": "Fix batch partial insert failure reporting (#17925)\n\n* Fix batch partial insert failure reporting\n\n* Fix IT\n\n* Preserve batch insert failures when invalid rows are removed\n\n* Localize batch partial insert failure reporting"
    },
    {
      "commit": "29724cd62e8d86a4555f31e8ab1cc407932e2e64",
      "tree": "1bdfdc254e52119089726a835473914cd1c6174e",
      "parents": [
        "8189f42d16ba2eadda2c27bfecae414eabf22bf5"
      ],
      "author": {
        "name": "Christofer Dutz",
        "email": "cdutz@apache.org",
        "time": "Mon Nov 09 02:34:18 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Nov 09 09:34:18 2026 +0800"
      },
      "message": "Update LICENSE-binary and NOTICE-binary to match the bundled dependencies (#19164)\n\nLICENSE-binary had drifted from what the binary distributions actually\nbundle: several listed artifacts are no longer shipped (among them the\njavax JAXB API and runtime, which the Jakarta migration replaced), some\nversions were outdated, and about 60 bundled artifacts, mostly the\ndependencies of the REST and MQTT services, were not listed at all.\n\nThe dependency section is now derived from the jars in the all-bin,\nedge-bin and library-udf-bin packages, including the dependencies inside\nthe rest and mqtt jar-with-dependencies. Dual-licensed artifacts are\nlisted under the most permissive option. licenses/ gets the texts for the\nnewly listed licenses and loses the ones nothing refers to any more.\n\nNOTICE-binary drops Apache Commons Collections, which isn\u0027t bundled, and\ncarries the notices from the NOTICE files of the bundled Apache-2.0\nartifacts."
    },
    {
      "commit": "8189f42d16ba2eadda2c27bfecae414eabf22bf5",
      "tree": "2b59b34009f252c3e160bb8c62aa9f8acb8fc210",
      "parents": [
        "dd430bd2497d6cacfb5bb7414f81bf5bf1c57a05"
      ],
      "author": {
        "name": "Jackie Tien",
        "email": "jackietien97@gmail.com",
        "time": "Mon Nov 09 09:01:11 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Nov 09 09:01:11 2026 +0800"
      },
      "message": "Remove redundant access counters from TierManagerTest (#19180)"
    },
    {
      "commit": "dd430bd2497d6cacfb5bb7414f81bf5bf1c57a05",
      "tree": "974ea80ec0eeb1065e4b11ca64aa77abf04e733a",
      "parents": [
        "c46fe4b84906ca8720dd13b319ec9dbe716c2f71"
      ],
      "author": {
        "name": "Jackie Tien",
        "email": "jackietien97@gmail.com",
        "time": "Mon Nov 09 08:28:06 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Nov 09 08:28:06 2026 +0800"
      },
      "message": "[Session] Fix tablet compression overflow with GZIP and LZMA2 (#19179)"
    },
    {
      "commit": "c46fe4b84906ca8720dd13b319ec9dbe716c2f71",
      "tree": "f48845d869dd72a22bd1fc3ed2a33d03a35bec8d",
      "parents": [
        "30173fae9540001b47732ee9c8f21f544281ca21"
      ],
      "author": {
        "name": "Christofer Dutz",
        "email": "cdutz@apache.org",
        "time": "Sun Nov 08 14:09:55 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Nov 08 21:09:55 2026 +0800"
      },
      "message": "[Session] Write PLAIN-encoded tablet columns in bulk instead of byte by byte (#19176)"
    },
    {
      "commit": "30173fae9540001b47732ee9c8f21f544281ca21",
      "tree": "9cb561b6d25e1151770110fd286ccbbc925ae4de",
      "parents": [
        "5adec0b0961d5f12b4ee2d76a427362d78b3dcf2"
      ],
      "author": {
        "name": "Christofer Dutz",
        "email": "cdutz@apache.org",
        "time": "Sun Nov 08 13:52:36 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Nov 08 20:52:36 2026 +0800"
      },
      "message": "[Core] Wake the procedure, WAL, disk-usage and periodical workers on stop (#19177)"
    },
    {
      "commit": "5adec0b0961d5f12b4ee2d76a427362d78b3dcf2",
      "tree": "b1a8977685a9ef0492c79b695c620871c2466e0d",
      "parents": [
        "a48b879779e1d138af941ad203e46cc867fdff6f"
      ],
      "author": {
        "name": "Christofer Dutz",
        "email": "cdutz@apache.org",
        "time": "Sun Nov 08 07:21:56 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Nov 08 14:21:56 2026 +0800"
      },
      "message": "[Parser] Skip error recovery in the SLL stage of the tree and table SQL parsers (#19175)"
    },
    {
      "commit": "a48b879779e1d138af941ad203e46cc867fdff6f",
      "tree": "fae674629afb47b99c468a56229c9cf6c88dfd04",
      "parents": [
        "73e3b6190ffebe8eb8a6e491fff49f772af7719b"
      ],
      "author": {
        "name": "Jackie Tien",
        "email": "jackietien97@gmail.com",
        "time": "Sun Nov 08 14:12:21 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Nov 08 14:12:21 2026 +0800"
      },
      "message": "Fix race in SessionSeedNodeFallbackTest discovery buffer checks (#19173)"
    },
    {
      "commit": "73e3b6190ffebe8eb8a6e491fff49f772af7719b",
      "tree": "b120d4baf1f5d6782e45a027990cb6b74f652b75",
      "parents": [
        "d8800f1cb38ff7a70af7d7b2bc2048eae870cc83"
      ],
      "author": {
        "name": "Jackie Tien",
        "email": "jackietien97@gmail.com",
        "time": "Sun Nov 08 14:10:12 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Nov 08 14:10:12 2026 +0800"
      },
      "message": "Increase Edge metadata lease timeout to ten years (#19165)"
    },
    {
      "commit": "d8800f1cb38ff7a70af7d7b2bc2048eae870cc83",
      "tree": "769b9cfa39728f0cc723282fd7b0fbcdc4e0c567",
      "parents": [
        "2691d4dac1e0da454e2d9c4998b0f85c6ccf153a"
      ],
      "author": {
        "name": "d-wang-commit",
        "email": "d.wang.commit@gmail.com",
        "time": "Sun Nov 08 02:43:48 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Nov 08 02:43:48 2026 +0800"
      },
      "message": "Retry compression ratio baseline reads before region migration (#19172)\n\nTreat transient cross-node SHOW REGIONS mismatches as unmet baseline conditions.\nSave the baseline only after the current poll completes with a non-NaN ratio."
    },
    {
      "commit": "2691d4dac1e0da454e2d9c4998b0f85c6ccf153a",
      "tree": "a77dde56a4521cb08b02e80a7f43e2ea08958e16",
      "parents": [
        "9a386abdc0ef905219a43839f7ce58e5d748f28b"
      ],
      "author": {
        "name": "alpass163",
        "email": "alpass163@163.com",
        "time": "Sat Nov 07 20:20:11 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Nov 07 20:20:11 2026 +0800"
      },
      "message": "Fix NPE of approx_most_frequent and approx_count_distinct on empty input (#19168)"
    },
    {
      "commit": "9a386abdc0ef905219a43839f7ce58e5d748f28b",
      "tree": "6ce00ebe7358a8e264e004194aec49e69277da05",
      "parents": [
        "a61e5bdddc818e07b95c5d066625b76748258503"
      ],
      "author": {
        "name": "alpass163",
        "email": "alpass163@163.com",
        "time": "Fri Nov 06 17:02:22 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Nov 06 17:02:22 2026 +0800"
      },
      "message": "Fix MAD UDF exact calculation and silent approximate result (#19162)"
    },
    {
      "commit": "a61e5bdddc818e07b95c5d066625b76748258503",
      "tree": "dc2b0c9ada4f13d747d2bd732a6a7a1ce56c41cc",
      "parents": [
        "cf146aa8391090cb2669afdaa0300ae396aa05f6"
      ],
      "author": {
        "name": "Caideyipi",
        "email": "87789683+Caideyipi@users.noreply.github.com",
        "time": "Fri Nov 06 16:44:32 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Nov 06 16:44:32 2026 +0800"
      },
      "message": "Honor auto-create-schema settings for tree and table LOAD (#19128)\n\n* Honor auto-create-schema settings for table-model LOAD\n\n* Honor auto-create-schema settings in tree LOAD fallback\n\n* Add SQL regression for tree LOAD schema policy during fallback\n\n* Preserve session policy during tree LOAD analysis\n\n* Honor LOAD schema policy before database creation"
    },
    {
      "commit": "cf146aa8391090cb2669afdaa0300ae396aa05f6",
      "tree": "ae4e1f38b6b894b0283b31354192b386c177d035",
      "parents": [
        "23e1740ee07e77b4ac2cae54def7bbaac98bdfb3"
      ],
      "author": {
        "name": "Caideyipi",
        "email": "87789683+Caideyipi@users.noreply.github.com",
        "time": "Fri Nov 06 16:01:08 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Nov 06 16:01:08 2026 +0800"
      },
      "message": "Fix timeout budget propagation in consensus subscription polling (#19036)"
    },
    {
      "commit": "23e1740ee07e77b4ac2cae54def7bbaac98bdfb3",
      "tree": "683c53850f79b64265b24024a0ffef46be9a3592",
      "parents": [
        "3ab38d1f90fda0601a8a33962427cae0e9cbf8c2"
      ],
      "author": {
        "name": "Caideyipi",
        "email": "87789683+Caideyipi@users.noreply.github.com",
        "time": "Fri Nov 06 15:54:26 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Nov 06 15:54:26 2026 +0800"
      },
      "message": "Fix delayed operator memory release after fragment termination (#18387)\n\n* Fix delayed fragment memory release\n\n* Fix final listener delivery when notifications are rejected"
    },
    {
      "commit": "3ab38d1f90fda0601a8a33962427cae0e9cbf8c2",
      "tree": "2d49d072f777573c01709b0a5c6bed364128d94a",
      "parents": [
        "0ed7549b9b9c9512f0f5a8b1ba7bfd042456fa31"
      ],
      "author": {
        "name": "d-wang-commit",
        "email": "d.wang.commit@gmail.com",
        "time": "Fri Nov 06 15:45:25 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Nov 06 15:45:25 2026 +0800"
      },
      "message": "Retry inconsistent region metadata while waiting for migrations (#19163)\n\nTreat transient cross-node SHOW REGIONS mismatches as unmet conditions\nin migration waits while preserving their deadlines and final assertions."
    },
    {
      "commit": "0ed7549b9b9c9512f0f5a8b1ba7bfd042456fa31",
      "tree": "c248bdb74cbd3681f570744d70960c58df1af35e",
      "parents": [
        "1512190c04323644d8617fd935c02e614f035bc6"
      ],
      "author": {
        "name": "Caideyipi",
        "email": "87789683+Caideyipi@users.noreply.github.com",
        "time": "Fri Nov 06 15:00:03 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Nov 06 15:00:03 2026 +0800"
      },
      "message": "Use column header constants in pipe authentication assertions (#19131)\n\n* Use column header constants in pipe user assertions\n\n* Use canonical column names in pipe privilege assertions"
    },
    {
      "commit": "1512190c04323644d8617fd935c02e614f035bc6",
      "tree": "f6c8d4f89cd14ca8ef653652e66f2f3756d717d1",
      "parents": [
        "207503295e3eef0b8fa28ded31354e4c5555e9b1"
      ],
      "author": {
        "name": "alpass163",
        "email": "alpass163@163.com",
        "time": "Fri Nov 06 12:18:01 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Nov 06 12:18:01 2026 +0800"
      },
      "message": "Fix the 552 message of ALTER VIEW ADD COLUMN (#19158)"
    },
    {
      "commit": "207503295e3eef0b8fa28ded31354e4c5555e9b1",
      "tree": "912a57ac387a6b439a96b0b7b16e88542b24e6dc",
      "parents": [
        "522c080122ef0dffb5c7ba6cfe01568ae24c1fde"
      ],
      "author": {
        "name": "Jiang Tian",
        "email": "jt2594838@163.com",
        "time": "Fri Nov 06 09:34:03 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Nov 06 09:34:03 2026 +0800"
      },
      "message": "Add configurable Thrift buffer reuse thresholds to Java clients (#19148)"
    },
    {
      "commit": "522c080122ef0dffb5c7ba6cfe01568ae24c1fde",
      "tree": "1182b2fa160d26a355204eb5617b5b47508a956d",
      "parents": [
        "4b447ff5c0bd8a2a7938e1964fb8ff034b53e6e9"
      ],
      "author": {
        "name": "Yongzao",
        "email": "yongzao@apache.org",
        "time": "Fri Nov 06 00:17:24 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Nov 06 00:17:24 2026 +0800"
      },
      "message": "Upgrade AINode security dependencies (#19153)"
    },
    {
      "commit": "4b447ff5c0bd8a2a7938e1964fb8ff034b53e6e9",
      "tree": "1f740b382e3a572975d63b9fb5b9b08fed56395d",
      "parents": [
        "4eebf87a79cff704ba5a28a805c1aad2b9cd6a73"
      ],
      "author": {
        "name": "d-wang-commit",
        "email": "d.wang.commit@gmail.com",
        "time": "Thu Nov 05 22:46:51 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Nov 05 22:46:51 2026 +0800"
      },
      "message": "Reset DiskFull protection after successful configuration reloads (#19151)\n\nRestore Running only when a successful reload starts and ends in\nReadOnly(DiskFull). Let subsequent directory selection register current\nfailures, and remove reload-specific tracking of tier folder managers."
    },
    {
      "commit": "4eebf87a79cff704ba5a28a805c1aad2b9cd6a73",
      "tree": "291d2524fdabe98c23aae56063186e4da4ab2c0c",
      "parents": [
        "fc6f68c213230d0bb166420f901f3bc8b00663ba"
      ],
      "author": {
        "name": "d-wang-commit",
        "email": "d.wang.commit@gmail.com",
        "time": "Thu Nov 05 22:33:13 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Nov 05 22:33:13 2026 +0800"
      },
      "message": "Keep unrecoverable error status reasons on one line (#19132)\n\nNormalize whitespace before truncating the exception message for read-only status.\nMark omitted text with an ellipsis and preserve whole Unicode characters."
    },
    {
      "commit": "fc6f68c213230d0bb166420f901f3bc8b00663ba",
      "tree": "6c7b321180df0d5930c22a93b6143b7c909648f5",
      "parents": [
        "219d2ea3bc786b80568c8601094ed75900f875ff"
      ],
      "author": {
        "name": "d-wang-commit",
        "email": "d.wang.commit@gmail.com",
        "time": "Thu Nov 05 19:20:36 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Nov 05 19:20:36 2026 +0800"
      },
      "message": "Fix premature recovery from DiskFull read-only mode (#19126)\n\n* Fix premature recovery from DiskFull read-only mode\n\nRequire affected directories to recover before restoring Running status.\nPreserve manual and unrecoverable read-only reasons.\n\n* Register disk recovery at the directory selection failure\n\nLet FolderManager check the same directories on failure and recovery. Remove the outer DataRegion registration and keep the availability check private.\n\n* Check current tier directories without retrying during DiskFull recovery"
    },
    {
      "commit": "219d2ea3bc786b80568c8601094ed75900f875ff",
      "tree": "b000c03e3eacef85f7092d66e0bd647dc80fd6cc",
      "parents": [
        "24e1203a4dc9ee0eec5bf24732bbbd644211a31a"
      ],
      "author": {
        "name": "Christofer Dutz",
        "email": "cdutz@apache.org",
        "time": "Thu Nov 05 11:47:23 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Nov 05 18:47:23 2026 +0800"
      },
      "message": "[IT] Pin the DataRegions per DataNode in IoTDBMultiTAGsWithAttributesTableIT (#19086)"
    },
    {
      "commit": "24e1203a4dc9ee0eec5bf24732bbbd644211a31a",
      "tree": "688e61cf8a4f1b67b41276007692d9e8d06e81d2",
      "parents": [
        "51748ae1fdec5548f93800fd169597a8b177f531"
      ],
      "author": {
        "name": "Zhenyu Luo",
        "email": "zhenyu@apache.org",
        "time": "Thu Nov 05 17:58:38 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Nov 05 17:58:38 2026 +0800"
      },
      "message": "Fix table schema map registration for table-model TsFiles (#19100)\n\n* Fix table schema registration for table-model TsFiles\n\nKeep the TableSchema map entry for every table that has chunk data in a TsFile, even when the schema has no FIELD or TIME column. Restore missing entries during flush and recovery, and retain them during compaction so table-model files do not degrade into tree-model files.\n\nAdd unit tests and a two-cluster integration test covering compaction and LOAD.\n\n* Mark table-model TsFiles with a file property and complete schema in LOAD\n\nWrite a single isTableModel file property when a table-model TsFile is closed by flush, compaction, recovery and the pipe sink, so a file whose TableSchema map is empty is no longer mistaken for a tree-model file. The property is constant time and independent of the number of tables.\n\nLOAD now completes a schema entry that has no column other than time, and an entry that is missing, from the table in IoTDB, and only fails with a dedicated message when the table exists neither in the file nor in IoTDB. The storage path keeps its previous behavior: it neither synthesizes entries for dropped tables nor scans chunks during recovery.\n\nAdd unit tests for the file property, the model detection and the schema completion, and an integration test covering time-only entries, missing entries and table creation.\n\n* Restore the previous TableSchema merge logic in table-model compaction\n\nCompactionTableSchema.merge behaves exactly as before: it merges id columns and never keeps the TIME column. Keeping the table-name entry of a table that wrote data into the target file is enough for a compacted file to stay identifiable, so the merge decision does not need to change.\n\nRestore the corresponding unit tests.\n\n* Stop keeping empty TableSchema entries in table-model compaction\n\nCompaction drops a TableSchema again when it has no FIELD or TIME column, as it did before this change. The target file stays identifiable through the isTableModel file property, so the writer only records that property, read before the unused entries are removed.\n\n* Mark every table-model TsFile written by compaction\n\nThe compaction writer learns the model from the database it compacts, so the isTableModel property is written whenever the target file belongs to a table-model database, even when its TableSchema map keeps no entry.\n\nAssert the property in the compaction and LOAD integration test.\n\n* Document that the table-model marker is written once when a file is sealed\n\nThe marker is one entry of the in-memory file property map, serialized by endFile(). Spell that out at the helper and at the flush and pipe call sites so the marker is never moved to a per-record, per-tablet or per-chunk-group position.\n\n* Take the table-model flag from DataRegion during WAL recovery\n\nUnsealedTsFileRecoverPerformer derived the data model from the database\nname via PathUtils.isTableModelDatabase, and the table-schema registration\nhelper repeated the same name-based check. That duplicates knowledge the\nowning DataRegion already holds through its isTableModel field and\nmisclassifies a table-model region whose database name happens to start\nwith \"root.\", which leaves the recovered TsFile with the chunks of a table\nbut no TableSchema entry for them.\n\nPass DataRegion.isTableModel into the recover performer, gate the schema\nregistration on it, and keep databaseName only as the DataNodeTableCache\nlookup key. Update the recovery tests to pass the model explicitly and\nturn the registration-helper test into a check that the database name is\nnever inspected to guess the model."
    },
    {
      "commit": "51748ae1fdec5548f93800fd169597a8b177f531",
      "tree": "4b83aad9715f0c7d38274d32f7de390d02512dcf",
      "parents": [
        "dbc4fb74f235bfa4cdcd8cd7d8185e24e5f15717"
      ],
      "author": {
        "name": "Caideyipi",
        "email": "87789683+Caideyipi@users.noreply.github.com",
        "time": "Thu Nov 05 17:22:43 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Nov 05 17:22:43 2026 +0800"
      },
      "message": "Fix subscription connection fencing during consumer reconnect (#19130)"
    },
    {
      "commit": "dbc4fb74f235bfa4cdcd8cd7d8185e24e5f15717",
      "tree": "3de55bbf471821d3fdf93e85d01e30ade31527bd",
      "parents": [
        "ad94d2b68cd3cc2ef4d23df18aebe600a1caad24"
      ],
      "author": {
        "name": "Caideyipi",
        "email": "87789683+Caideyipi@users.noreply.github.com",
        "time": "Thu Nov 05 17:00:23 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Nov 05 17:00:23 2026 +0800"
      },
      "message": "Fix cached nullable table attribute filtering (#19133)\n\n* Fix cached nullable table attribute filtering\n\n* Handle unknown cached attribute predicates"
    },
    {
      "commit": "ad94d2b68cd3cc2ef4d23df18aebe600a1caad24",
      "tree": "a77eeba8be9abbe813e1eb0e8ec6367b6b958e94",
      "parents": [
        "c4086c5df64dcebf052b3f08ed462ed5293ab1cb"
      ],
      "author": {
        "name": "Caideyipi",
        "email": "87789683+Caideyipi@users.noreply.github.com",
        "time": "Thu Nov 05 16:47:59 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Nov 05 16:47:59 2026 +0800"
      },
      "message": "Fix WAL roll file test flush wait (#17904)"
    },
    {
      "commit": "c4086c5df64dcebf052b3f08ed462ed5293ab1cb",
      "tree": "00aaf772c7b1bb1c3d3885fbe799fc02f9f5df83",
      "parents": [
        "6a3e9d214a74e6b57bc8927953c00a3ce9b4dcae"
      ],
      "author": {
        "name": "Caideyipi",
        "email": "87789683+Caideyipi@users.noreply.github.com",
        "time": "Thu Nov 05 16:47:04 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Nov 05 16:47:04 2026 +0800"
      },
      "message": "Fix LOAD rate limiting to account for source TsFile bytes (#19141)"
    },
    {
      "commit": "6a3e9d214a74e6b57bc8927953c00a3ce9b4dcae",
      "tree": "c947adefa3b4946861d98991655b91e2549045f2",
      "parents": [
        "4b80fa56a999baf9de625f10b392bf2f2bcaa880"
      ],
      "author": {
        "name": "Caideyipi",
        "email": "87789683+Caideyipi@users.noreply.github.com",
        "time": "Thu Nov 05 16:26:39 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Nov 05 16:26:39 2026 +0800"
      },
      "message": "Fall back to a current replica when the cached region leader is stale (#19135)"
    },
    {
      "commit": "4b80fa56a999baf9de625f10b392bf2f2bcaa880",
      "tree": "1a454625572bb84e05a3d4744e3ddc79e6bcd124",
      "parents": [
        "a2d83f7abe0f6545ca8535f6a5f733ee4fe1a791"
      ],
      "author": {
        "name": "Caideyipi",
        "email": "87789683+Caideyipi@users.noreply.github.com",
        "time": "Thu Nov 05 15:01:05 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Nov 05 15:01:05 2026 +0800"
      },
      "message": "Fix subscription prefetch retries under delivery backpressure (#19137)"
    },
    {
      "commit": "a2d83f7abe0f6545ca8535f6a5f733ee4fe1a791",
      "tree": "ce9bb5424928c9b8d58c3a1a8758d79f6a0c2bce",
      "parents": [
        "e92ecf1d5d62de0c67a52e80ff6cb7e307ab6583"
      ],
      "author": {
        "name": "Caideyipi",
        "email": "87789683+Caideyipi@users.noreply.github.com",
        "time": "Thu Nov 05 14:54:30 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Nov 05 14:54:30 2026 +0800"
      },
      "message": "Reduce WAL directory scans during subscription replay refresh (#19129)"
    },
    {
      "commit": "e92ecf1d5d62de0c67a52e80ff6cb7e307ab6583",
      "tree": "72caac6f66924bc6b83c72ac0774a21464103db1",
      "parents": [
        "888f169f652a6c6fc44dace31e5f5d5f34e0e751"
      ],
      "author": {
        "name": "Caideyipi",
        "email": "87789683+Caideyipi@users.noreply.github.com",
        "time": "Thu Nov 05 12:16:44 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Nov 05 12:16:44 2026 +0800"
      },
      "message": "Fix table TTL reset propagation to DataNodes (#19110)\n\n* Fix table TTL reset propagation to DataNodes\n\n* Fix table TTL default reset consistency"
    },
    {
      "commit": "888f169f652a6c6fc44dace31e5f5d5f34e0e751",
      "tree": "88a424a77a2c529b9f804f46b751a36b148a47ed",
      "parents": [
        "2bfb3a5fe10f19182bd46c9c361cab32e314d9cf"
      ],
      "author": {
        "name": "Caideyipi",
        "email": "87789683+Caideyipi@users.noreply.github.com",
        "time": "Thu Nov 05 10:08:21 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Nov 05 10:08:21 2026 +0800"
      },
      "message": "Fix concurrent subscription batch snapshots (#19116)"
    },
    {
      "commit": "2bfb3a5fe10f19182bd46c9c361cab32e314d9cf",
      "tree": "055cd2d4dba5061d8a23d58904f47ddfe9f1c9a0",
      "parents": [
        "ef9e799f50a522ff249f2f77a4a00fa413e46aa5"
      ],
      "author": {
        "name": "Zhenyu Luo",
        "email": "zhenyu@apache.org",
        "time": "Thu Nov 05 10:08:08 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Nov 05 10:08:08 2026 +0800"
      },
      "message": "[IT] Wait for all Regions to be Running after a cluster restart (#19114)\n\nrestartCluster() returns as soon as every node reports a non-Unknown status and a JDBC\nconnection succeeds, but ConfigNode keeps the RegionGroups of a Database Disabled until all\nRegions of the group report Running. Any write issued in that window, including an active LOAD,\nis rejected with NO_AVAILABLE_REGION_GROUP.\n\nIoTDBLoadTsFileActiveScanIT#testIncompletePublicationSurvivesScannerRestartAndPreservesMods\nrestarts the cluster and immediately publishes a canary TsFile into the active LOAD listening\ndirectory. The scanner rescans every second, so the canary was picked up during the Disabled\nwindow, the LOAD failed permanently (the file was moved to ext/load/failed) and awaitRows timed\nout after 60 seconds.\n\nWait for all Regions reported by SHOW REGIONS to be Running before restartCluster() returns.\nSHOW REGIONS reads the same ConfigNode LoadCache status that rejects the write, so the wait\ncovers exactly the condition that fails the LOAD. SHOW REGIONS only lists the Databases of the\ndialect of the connection, so the tree model and the table model are checked separately, and the\n100 ms poll interval keeps the added delay negligible while still converging within a few\nheartbeats. IoTDBRegionReadyAfterRestartTableIT covers a table-model-only cluster, where a\ntree-dialect SHOW REGIONS lists no Region at all."
    },
    {
      "commit": "ef9e799f50a522ff249f2f77a4a00fa413e46aa5",
      "tree": "04261ca9fe90822ca21904cad24d0241d88b9b31",
      "parents": [
        "b896b6f51860b104f7ed032f75356b1ae1f96ab8"
      ],
      "author": {
        "name": "Caideyipi",
        "email": "87789683+Caideyipi@users.noreply.github.com",
        "time": "Thu Nov 05 10:07:06 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Nov 05 10:07:06 2026 +0800"
      },
      "message": "[Bugfix] Disable Subscription and Pipes containing data insertion under Ratis (#19053)\n\n* [Bugfix] Replay Ratis historical TsFiles without Pipe progress\n\nTreat MinimumProgressIndex as unknown for Ratis historical extraction so\nsuccessful writes remain eligible for replay after a leader change.\nPreserve valid-index and other consensus-protocol coverage filtering.\n\nAdd a regression test for initial and resumed checkpoints and the\nunaffected filtering behavior.\n\n* Disable Pipe and Subscription with Ratis\n\n* Restore ConfigNode descriptor imports\n\n* Revert \"Disable Pipe and Subscription with Ratis\"\n\nThis reverts commit 7d4912d72d1a29c98f52b415d30e79724486714d.\n\n* Refine Ratis Pipe and Subscription restrictions\n\n* Fix Ratis pipe recovery and receiver validation gaps\n\n* Fix Pipe coordinator drop races and Ratis PlanNode admission\n\n* Remove redundant consensus pipe exemptions from Ratis checks\n\n* Address receiver review feedback"
    },
    {
      "commit": "b896b6f51860b104f7ed032f75356b1ae1f96ab8",
      "tree": "d3ceca72fe3a51e95ffcbaedca3644539b78f481",
      "parents": [
        "4a8017182766b23f507d9df9be7540d571927852"
      ],
      "author": {
        "name": "Caideyipi",
        "email": "87789683+Caideyipi@users.noreply.github.com",
        "time": "Thu Nov 05 10:02:53 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Nov 05 10:02:53 2026 +0800"
      },
      "message": "[Doc] Avoid global database counts in integration tests (#19127)"
    },
    {
      "commit": "4a8017182766b23f507d9df9be7540d571927852",
      "tree": "136873a59adf938250cec9303963ab0de7d46a06",
      "parents": [
        "03a28bace3589ff5d9d45c0f20c7a5686b6d8dab"
      ],
      "author": {
        "name": "Caideyipi",
        "email": "87789683+Caideyipi@users.noreply.github.com",
        "time": "Thu Nov 05 10:00:03 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Nov 05 10:00:03 2026 +0800"
      },
      "message": "Fixed the insertion NPE bug with out of ttl and pipe (#19124)\n\n* Primitive\n\n* Update TsFileEpochManagerTest.java\n\n* Update IoTDBInsertTableIT.java\n\n* Update IoTDBInsertTableIT.java\n\n* Update IoTDBInsertTableIT.java"
    },
    {
      "commit": "03a28bace3589ff5d9d45c0f20c7a5686b6d8dab",
      "tree": "0a10fcf3368c1a8f3a5fa0fddaf597118beec421",
      "parents": [
        "9f0bc18d700f87f81b15d8e041edc1f1c8a65699"
      ],
      "author": {
        "name": "Christofer Dutz",
        "email": "cdutz@apache.org",
        "time": "Thu Nov 05 02:35:52 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Nov 05 09:35:52 2026 +0800"
      },
      "message": "[Pipe] Make two pipe fields thread-safe for SonarCloud\u0027s reliability gate (#19109)"
    },
    {
      "commit": "9f0bc18d700f87f81b15d8e041edc1f1c8a65699",
      "tree": "dc7c9430ca4e3e7c1130985aacc4a3d0c098fbe1",
      "parents": [
        "1c709913143463fed1a2b7f8d010629001717cf1"
      ],
      "author": {
        "name": "d-wang-commit",
        "email": "d.wang.commit@gmail.com",
        "time": "Thu Nov 05 07:56:14 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Nov 05 07:56:14 2026 +0800"
      },
      "message": "Retry peer-list reset during AddRegionPeer rollback (#19118)\n\nWait five seconds between up to three additional reset RPC batches.\nCover retry success, exhaustion, early completion and interruption."
    },
    {
      "commit": "1c709913143463fed1a2b7f8d010629001717cf1",
      "tree": "89774718b480f3cad923fb1f736665ec86e7abf7",
      "parents": [
        "dfce814dad6a94830dc26353e9f048bc05a58f89"
      ],
      "author": {
        "name": "Jackie Tien",
        "email": "jackietien97@gmail.com",
        "time": "Wed Nov 04 16:44:59 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Nov 04 16:44:59 2026 +0800"
      },
      "message": "[IT] Wait for asynchronous DROP TABLE before flushing in table deletion IT (#19123)"
    },
    {
      "commit": "dfce814dad6a94830dc26353e9f048bc05a58f89",
      "tree": "92a5e0d395da359e0a7bc6280839826fa660f153",
      "parents": [
        "150a14c38cb0d442cb12923cab699ff8104ad557"
      ],
      "author": {
        "name": "Zhenyu Luo",
        "email": "zhenyu@apache.org",
        "time": "Wed Nov 04 16:03:54 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Nov 04 16:03:54 2026 +0800"
      },
      "message": "Fix pipe task start failures: report, roll back and recover (#19119)\n\n* Fix pipe sink subtask silently failing to start after a rejected submission\n\nPipeSubtaskExecutor.start() marked the subtask as \"submitting self\" before\ncalling submitSelf(). When the submission was rejected, e.g. because the\nworker pool had been shut down, the flag stayed set, so every later start()\ntook the \"already running\" branch, logged nothing and reported success while\nthe subtask never ran until the node restarted. The flag is now rolled back\non failure and the rejection is logged and rethrown, so the failure reaches\nthe pipe task agent and the config node instead of being masked as success.\n\nPipeAbstractSinkSubtask also clears its \"isSubmitted\" sign when submitting is\ndisallowed, so a submission that was never dispatched to the worker pool can\nbe submitted again.\n\nThe IoTConsensusV2 subtask executor is shared by all the consensus pipes of a\nnode. Once it had been shut down, getConsensusExecutor() kept returning the\ndead pool, so every consensus pipe registered afterwards could never start its\nsink subtask. A shut-down executor is now recreated and installed back into\nIoTV2GlobalComponentContainer.\n\n* Retry pipe tasks whose start failed instead of leaving them dead\n\nstartPipeTask() let an exception of PipeTask.start() escape without rolling\nback the task it had just created. The task meta was already registered, so\nthe following meta sync found an existing task meta with the same leader and\nnever called start() again: the pipe stayed \"RUNNING\" in the metadata while\nrunning nothing until the node restarted.\n\nThe failed task is now dropped together with its task meta, so that the next\nmeta sync recreates and starts the task again, which gives the task another\nchance to start once the underlying problem is gone. The failure itself is\nlogged at error level instead of being carried away by the meta sync loop.\n\n* Report the rejection of a pipe sink subtask submission instead of stopping silently\n\nA sink subtask submits itself again after the end of each round. If the\nsubmission is rejected, e.g. because the worker pool is being shut down while\nthe subtask is finishing a round, the rejection escaped from the callback\nthread where it was swallowed, and, for a delayed submission, the \"submitted\"\nsign had already been set before scheduling the delayed task, so it was never\ncleared. In both cases the subtask was never submitted again and stopped\ntransferring events without leaving any trace in the log.\n\nThe sign is now cleared and the rejection is reported whenever the submission\nor the delayed scheduling fails, so the failure is visible and a following\nstart of the subtask can submit it again.\n\n* Fix pipe subtask single-flight violation when stopped and restarted\n\nPipeAbstractSinkSubtask#onDisallowSubmittingSelf cleared isSubmitted while\na submitted call could still be running. A following start() then submitted\nthe same subtask again, so two workers could execute one sink subtask\nconcurrently, which PipeSubtask does not support.\n\nKeep isSubmitted as the single-flight flag: a call in flight is allowed to\nfinish and re-submit itself once start() has cleared the stop flag. Instead,\nmake PipeSubtaskExecutor#start fail fast when the executor has been shut\ndown, before touching any subtask state. A shut-down executor can never run\nthe subtask, so start() must not report a false success. This also covers a\ndelayed submission that is still pending when the executor is shut down.\n\nAdd regression tests for stopping and restarting a subtask while its first\ncall is blocked, and for starting a subtask with a pending delayed\nsubmission after shutdown. Recreate the shared consensus executor after the\nmanager tests so they do not leave it shut down for other tests.\n\n* Shorten comments and document the intent of the new tests\n\nReplace the verbose inline comments in the pipe task start fix with concise\nones, and state the scenario and expected behavior in a short Javadoc above\neach new test."
    },
    {
      "commit": "150a14c38cb0d442cb12923cab699ff8104ad557",
      "tree": "3add6d87312e983dd4aba3f2b13baec7b69b2afc",
      "parents": [
        "ee347f403d7def035d20785a2885de306ef3d0d0"
      ],
      "author": {
        "name": "Jackie Tien",
        "email": "jackietien97@gmail.com",
        "time": "Wed Nov 04 15:25:52 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Nov 04 15:25:52 2026 +0800"
      },
      "message": "[IT] Make integrationTest.dataRegionPerDataNode reach the ConfigNode (#19121)"
    },
    {
      "commit": "ee347f403d7def035d20785a2885de306ef3d0d0",
      "tree": "6e00f575ba9db39d4203dedbf33f277e1dd153aa",
      "parents": [
        "3ffe2958758ac2a7d9c372cc5e282d264e818eb2"
      ],
      "author": {
        "name": "Caideyipi",
        "email": "87789683+Caideyipi@users.noreply.github.com",
        "time": "Wed Nov 04 14:57:02 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Nov 04 14:57:02 2026 +0800"
      },
      "message": "Ensure Session.close() closes all connections after failures (#19104)\n\n* Make Session.close resilient to connection failures\n\n* Cover query-only session connection cleanup"
    },
    {
      "commit": "3ffe2958758ac2a7d9c372cc5e282d264e818eb2",
      "tree": "4db3ed36f5241608ba971083f21180c10e1e9b72",
      "parents": [
        "65ef92f60a0f23d2d98be55f9f921e463d5da707"
      ],
      "author": {
        "name": "Caideyipi",
        "email": "87789683+Caideyipi@users.noreply.github.com",
        "time": "Wed Nov 04 14:44:34 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Nov 04 14:44:34 2026 +0800"
      },
      "message": "Fix automatic LOAD retries during region recovery (#19098)\n\n* Fix automatic LOAD retries during region recovery\n\n* Preserve wrapped region recovery errors during LOAD\n\n* Clarify region-unavailable LOAD retry semantics"
    },
    {
      "commit": "65ef92f60a0f23d2d98be55f9f921e463d5da707",
      "tree": "763a9507f1f438bea5387dff3284bdee2406906c",
      "parents": [
        "2fd7d838cbab3bd8645681b8020c5597e340378d"
      ],
      "author": {
        "name": "Caideyipi",
        "email": "87789683+Caideyipi@users.noreply.github.com",
        "time": "Wed Nov 04 09:57:09 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Nov 04 09:57:09 2026 +0800"
      },
      "message": "Fix Prepared Table-Model INSERT VALUES Execution (#19078)\n\n* Enforce SQL read-only checks before analysis\n\n* Narrow PR to prepared VALUES fixes"
    },
    {
      "commit": "2fd7d838cbab3bd8645681b8020c5597e340378d",
      "tree": "3993bd266e2fdad34e84a4f430cf8deafa862cda",
      "parents": [
        "814b77028ad42035ae4a8645481d3db84a40f953"
      ],
      "author": {
        "name": "Christofer Dutz",
        "email": "cdutz@apache.org",
        "time": "Wed Nov 04 01:23:06 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Nov 04 08:23:06 2026 +0800"
      },
      "message": "[IT] Read the address column of lsof when checking port occupation (#19070)"
    },
    {
      "commit": "814b77028ad42035ae4a8645481d3db84a40f953",
      "tree": "b60732256583df069b31c7264366c1c29fa0eecd",
      "parents": [
        "e09005e87d036d308676a2c7a879898a9f231329"
      ],
      "author": {
        "name": "Caideyipi",
        "email": "87789683+Caideyipi@users.noreply.github.com",
        "time": "Tue Nov 03 18:30:16 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Nov 03 18:30:16 2026 +0800"
      },
      "message": "Fix historical TsFile filtering and reference acquisition (#19096)\n\n* Fix historical TsFile filtering and reference acquisition\n\n* Clarify realtime TsFile filtering and reference ownership"
    },
    {
      "commit": "e09005e87d036d308676a2c7a879898a9f231329",
      "tree": "1239ca72ab1f672cdb1c5038e2f58efcdd9d34a7",
      "parents": [
        "c515756e93b77073151429605740aced6bf62c14"
      ],
      "author": {
        "name": "Caideyipi",
        "email": "87789683+Caideyipi@users.noreply.github.com",
        "time": "Tue Nov 03 17:18:23 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Nov 03 17:18:23 2026 +0800"
      },
      "message": "Preserve JDBC session diagnostics across locales (#19102)\n\n* Preserve JDBC legacy-server diagnostics across locales\n\n* Handle JDBC session diagnostics across locales and absent messages\n\n* Declare logback-core for JDBC test dependencies\n\n* Test JDBC diagnostics without logging dependencies"
    },
    {
      "commit": "c515756e93b77073151429605740aced6bf62c14",
      "tree": "b56969b1b6910e4b349ab0dcb585fa1d5de28d04",
      "parents": [
        "ca8074d15c824f2533d357778e40f773d02b5565"
      ],
      "author": {
        "name": "Caideyipi",
        "email": "87789683+Caideyipi@users.noreply.github.com",
        "time": "Tue Nov 03 17:08:52 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Nov 03 17:08:52 2026 +0800"
      },
      "message": "[Pipe] Improve fair TsFile parser admission (#19106)"
    },
    {
      "commit": "ca8074d15c824f2533d357778e40f773d02b5565",
      "tree": "0a6400f38064b0e9f3a916547318e8e19436d5ec",
      "parents": [
        "dda1e45d513f2c1656fe8ba6a24984f7f957a3dc"
      ],
      "author": {
        "name": "Caideyipi",
        "email": "87789683+Caideyipi@users.noreply.github.com",
        "time": "Tue Nov 03 16:15:18 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Nov 03 16:15:18 2026 +0800"
      },
      "message": "Stabilize IT observation periods and restart cache checks (#19095)\n\n* Stabilize IT observation periods and restart cache checks\n\n* Persist restart-cache IT input before stopping nodes"
    },
    {
      "commit": "dda1e45d513f2c1656fe8ba6a24984f7f957a3dc",
      "tree": "1e2c9d682a1e8c0937ded43351d343baf09b114d",
      "parents": [
        "b8765eda64fc061a3b9f1481c9a01304ea19bc60"
      ],
      "author": {
        "name": "Caideyipi",
        "email": "87789683+Caideyipi@users.noreply.github.com",
        "time": "Tue Nov 03 15:51:25 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Nov 03 15:51:25 2026 +0800"
      },
      "message": "Fix LOAD snapshot races and stabilize cluster sync tests (#19031)\n\n* Fix LOAD snapshot races during concurrent piece writes\n\n* Keep LOAD snapshots independent of writable staged files\n\n* Stabilize LOAD cluster restart integration tests\n\n* Fix LOAD snapshot recovery with missing progress logs\n\n* Fix LOAD snapshot copy during concurrent writes\n\n* Stabilize concurrent LOAD snapshot restore test"
    },
    {
      "commit": "b8765eda64fc061a3b9f1481c9a01304ea19bc60",
      "tree": "5596d4dd82acd80a6f88f1561b32cfcc4918f2f1",
      "parents": [
        "e6b44b57e49e1e7f0ecf5d6c62fa7e1f69a9a869"
      ],
      "author": {
        "name": "d-wang-commit",
        "email": "d.wang.commit@gmail.com",
        "time": "Tue Nov 03 15:24:11 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Nov 03 15:24:11 2026 +0800"
      },
      "message": "Fix ConfigNode procedure snapshot loading with MD5 files (#19101)\n\nLoad only regular procedure .bin files and preserve checksum sidecars.\nCover snapshots with and without procedures using real MD5 files."
    },
    {
      "commit": "e6b44b57e49e1e7f0ecf5d6c62fa7e1f69a9a869",
      "tree": "37854a94cb8c4605ec88996e4695830c0fd24104",
      "parents": [
        "24fd30e1ac6b43a32aaeca2066034b1ae81fbc44"
      ],
      "author": {
        "name": "Caideyipi",
        "email": "87789683+Caideyipi@users.noreply.github.com",
        "time": "Tue Nov 03 10:33:29 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Nov 03 10:33:29 2026 +0800"
      },
      "message": "Fix table DELETE filters with mixed-case columns (#19087)"
    },
    {
      "commit": "24fd30e1ac6b43a32aaeca2066034b1ae81fbc44",
      "tree": "a832289acad8800731050c657538940742d1c455",
      "parents": [
        "cebe6639993ec641599b7b4e27403557b25c2f7e"
      ],
      "author": {
        "name": "Caideyipi",
        "email": "87789683+Caideyipi@users.noreply.github.com",
        "time": "Mon Nov 02 18:44:12 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Nov 02 18:44:12 2026 +0800"
      },
      "message": "Stabilize query execution concurrency unit tests (#19079)\n\n* Stabilize query execution concurrency unit tests\n\n* Stabilize blocked priority queue unit tests\n\n* Propagate worker failures and guarantee unit test cleanup"
    },
    {
      "commit": "cebe6639993ec641599b7b4e27403557b25c2f7e",
      "tree": "46469fc85f572598102f08d2a3958333c4e880b2",
      "parents": [
        "64667478a0dea61ed74571d3c2bef5c5529525b9"
      ],
      "author": {
        "name": "Caideyipi",
        "email": "87789683+Caideyipi@users.noreply.github.com",
        "time": "Mon Nov 02 18:39:39 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Nov 02 18:39:39 2026 +0800"
      },
      "message": "Fix hybrid pipe queue memory admission across data regions (#19080)"
    },
    {
      "commit": "64667478a0dea61ed74571d3c2bef5c5529525b9",
      "tree": "cf13f8d8aab14bfa09e538a62a0e03b0f40814f0",
      "parents": [
        "88f85321744697d747a6c6ed8ec41eeb6aa6b978"
      ],
      "author": {
        "name": "Christofer Dutz",
        "email": "cdutz@apache.org",
        "time": "Mon Nov 02 11:27:38 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Nov 02 11:27:38 2026 +0100"
      },
      "message": "[IT] Force English locale for integration test JVMs (#19068)\n\nIntegration tests fail on hosts with a non-English default locale (e.g.\nde_DE): String.format(\"%f\") in tests renders decimal commas into SQL, and\nserver-side number formatting (format(), UDF output) differs from the\nexpected English output.\n\nExport -Duser.language\u003den -Duser.country\u003dUS as JAVA_TOOL_OPTIONS via\nfailsafe\u0027s environmentVariables. The forked test JVM picks it up directly\nand the DataNode/ConfigNode processes spawned by AbstractNodeWrapper\ninherit it through ProcessBuilder. The value is configurable via the\nintegrationTest.localeOpts property."
    },
    {
      "commit": "88f85321744697d747a6c6ed8ec41eeb6aa6b978",
      "tree": "b7e5935928093635ff0c729db07112b0e7d36997",
      "parents": [
        "76d573a4e3d83068d4eb4bbb1e4ed97040463eb8"
      ],
      "author": {
        "name": "Caideyipi",
        "email": "87789683+Caideyipi@users.noreply.github.com",
        "time": "Mon Nov 02 18:25:24 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Nov 02 18:25:24 2026 +0800"
      },
      "message": "Allow heartbeat retries while a realtime TsFile is in flight (#19075)\n\n* Fix realtime TsFile source retry progress\n\n* Fix heartbeat ordering test setup"
    },
    {
      "commit": "76d573a4e3d83068d4eb4bbb1e4ed97040463eb8",
      "tree": "0e9bbd7e223bdaee266c4abe51b50d330e836b24",
      "parents": [
        "1b2158fec358ed9952f5cbca2bc1387dd46b3419"
      ],
      "author": {
        "name": "Caideyipi",
        "email": "87789683+Caideyipi@users.noreply.github.com",
        "time": "Mon Nov 02 18:19:38 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Nov 02 18:19:38 2026 +0800"
      },
      "message": "Fix deletion recovery and table last-cache correctness (#19081)"
    },
    {
      "commit": "1b2158fec358ed9952f5cbca2bc1387dd46b3419",
      "tree": "6934ea1d883f4e1ad47edc3da61a61443bc72b16",
      "parents": [
        "cc8e94781a1a816fc0fa3a07f588b1f5b2a63ae0"
      ],
      "author": {
        "name": "Caideyipi",
        "email": "87789683+Caideyipi@users.noreply.github.com",
        "time": "Mon Nov 02 16:23:30 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Nov 02 16:23:30 2026 +0800"
      },
      "message": "Fix active LOAD worker retirement leaving files pending (#19076)"
    },
    {
      "commit": "cc8e94781a1a816fc0fa3a07f588b1f5b2a63ae0",
      "tree": "bb3c2d3a12d03c36fd0b07b67f391aad0262b725",
      "parents": [
        "503e6ee157206af5763f0e2054e2170ba5f8b7ff"
      ],
      "author": {
        "name": "Caideyipi",
        "email": "87789683+Caideyipi@users.noreply.github.com",
        "time": "Mon Nov 02 15:56:00 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Nov 02 15:56:00 2026 +0800"
      },
      "message": "Support strictly unidirectional UDP air-gap transfer (#19063)\n\n* Support strictly unidirectional UDP air-gap transfer\n\n* Avoid refreshing idle air-gap heartbeat sessions\n\n* Preserve UDP receiver state across repeated unidirectional handshakes\n\n* Pace one-way UDP packets and preserve nested receiver context\n\n* Stop air-gap receiver retries when interrupted"
    },
    {
      "commit": "503e6ee157206af5763f0e2054e2170ba5f8b7ff",
      "tree": "8449de7fecc7526aa5a320e52246329deedcafe0",
      "parents": [
        "cceb9e70d565b9b7351e5347a9ec2d29a6da23be"
      ],
      "author": {
        "name": "Haonan",
        "email": "hhaonan@outlook.com",
        "time": "Mon Nov 02 15:40:18 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Nov 02 15:40:18 2026 +0800"
      },
      "message": "Fix configured TLS version enforcement for Thrift and REST (#19074)"
    },
    {
      "commit": "cceb9e70d565b9b7351e5347a9ec2d29a6da23be",
      "tree": "ccb02478ee737c1c3eff8160a0050ab3eacb2909",
      "parents": [
        "af225846393dfc0da265afa80a3bb37f98e85ef0"
      ],
      "author": {
        "name": "Caideyipi",
        "email": "87789683+Caideyipi@users.noreply.github.com",
        "time": "Mon Nov 02 15:24:48 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Nov 02 15:24:48 2026 +0800"
      },
      "message": "Localize server, client, and tool diagnostics (#19066)\n\n* Localize pipe, subscription, write, load, and metadata diagnostics\n\n* Expand bilingual diagnostics across core modules"
    },
    {
      "commit": "af225846393dfc0da265afa80a3bb37f98e85ef0",
      "tree": "99f03ebf9c62fd35af33876a8297451ce447d6d5",
      "parents": [
        "9463d011e857ca060c8d1c799f803a54fba9c115"
      ],
      "author": {
        "name": "Caideyipi",
        "email": "87789683+Caideyipi@users.noreply.github.com",
        "time": "Mon Nov 02 15:17:18 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Nov 02 15:17:18 2026 +0800"
      },
      "message": "[Pipe] Fix remaining-event metric identities (#19071)\n\n* [Pipe] Fix ConfigRegion remaining event count lookup\n\n* [Pipe] Preserve full pipe names in remaining metrics"
    },
    {
      "commit": "9463d011e857ca060c8d1c799f803a54fba9c115",
      "tree": "5f1f8979149bf5f67a0ac9b86b3ee1ff75ed424c",
      "parents": [
        "999721fcafd5e95ff5f3de931ad34175ea315946"
      ],
      "author": {
        "name": "Caideyipi",
        "email": "87789683+Caideyipi@users.noreply.github.com",
        "time": "Mon Nov 02 15:09:47 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Nov 02 15:09:47 2026 +0800"
      },
      "message": "Preserve LOAD sources after unrecoverable query fallback (#19073)\n\n* Fix LOAD fallback error reporting and scan-boundary resumption\n\n* Fix LOAD fallback checkpoints across chunk groups\n\n* Fix LOAD fallback metadata error propagation\n\n* Fix LOAD fallback metadata batches"
    },
    {
      "commit": "999721fcafd5e95ff5f3de931ad34175ea315946",
      "tree": "bc51e1c0d41aa389ff49307484e94e33c5a62e53",
      "parents": [
        "574aa691f0e68f769f26440f8c2ce9b05652f141"
      ],
      "author": {
        "name": "Caideyipi",
        "email": "87789683+Caideyipi@users.noreply.github.com",
        "time": "Mon Nov 02 11:34:47 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Nov 02 11:34:47 2026 +0800"
      },
      "message": "Fix consensus subscription WAL retention and replay cursor (#19042)\n\n* Fix consensus subscription WAL retention and replay cursor\n\n* Address WAL retention and replay review feedback"
    },
    {
      "commit": "574aa691f0e68f769f26440f8c2ce9b05652f141",
      "tree": "06927242a95dcc701bb79487fa80df191df4009c",
      "parents": [
        "59ac348a3f2954cbdbc5e53c01a3cd475a187880"
      ],
      "author": {
        "name": "Caideyipi",
        "email": "87789683+Caideyipi@users.noreply.github.com",
        "time": "Mon Nov 02 10:31:20 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Nov 02 10:31:20 2026 +0800"
      },
      "message": "[Subscription] Add a switch for consensus fallback polling (#19062)\n\n* [Subscription] Add a switch for consensus fallback polling\n\n* [Subscription] Add cluster coverage for disabled fallback polling"
    },
    {
      "commit": "59ac348a3f2954cbdbc5e53c01a3cd475a187880",
      "tree": "3cbab6a935da5cf3e7b0a61dafa0fbb083cfef06",
      "parents": [
        "595aa8442bb50fc8bfafdb8f11d40a94e1b3c1bd"
      ],
      "author": {
        "name": "Caideyipi",
        "email": "87789683+Caideyipi@users.noreply.github.com",
        "time": "Mon Nov 02 10:29:40 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Nov 02 10:29:40 2026 +0800"
      },
      "message": "Fix Pipe leader cache isolation across receivers (#19064)"
    },
    {
      "commit": "595aa8442bb50fc8bfafdb8f11d40a94e1b3c1bd",
      "tree": "fe8549a99e91aef0c4f889eb4ec8ca8c19f42e46",
      "parents": [
        "8a5e5ca5444427a68e5597ed3211a223a8103555"
      ],
      "author": {
        "name": "Caideyipi",
        "email": "87789683+Caideyipi@users.noreply.github.com",
        "time": "Mon Nov 02 10:08:10 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Nov 02 10:08:10 2026 +0800"
      },
      "message": "Fix write-back sink history failure state handling (#19056)\n\n* Fix write-back sink history failure state handling\n\n* Fix write-back sink auto-split test credentials\n\n* Fix pipe metadata retry persistence"
    },
    {
      "commit": "8a5e5ca5444427a68e5597ed3211a223a8103555",
      "tree": "125766f58457fd3ca741209487f72f44abb9b474",
      "parents": [
        "26cbf0f6a8aec385daff71cf575b8860dcfc62ea"
      ],
      "author": {
        "name": "d-wang-commit",
        "email": "d.wang.commit@gmail.com",
        "time": "Sat Oct 31 12:42:38 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Oct 31 12:42:38 2026 +0800"
      },
      "message": "Fix stale Ratis log size accounting in DiskGuardian (#19067)\n\nRecompute open and closed log segment sizes on each scan.\nCover same-path growth, recreation, rotation, and deletion with regression tests."
    },
    {
      "commit": "26cbf0f6a8aec385daff71cf575b8860dcfc62ea",
      "tree": "803e1aba6d0d761383bb86466bce981447452c49",
      "parents": [
        "3a51384b2dcc8c29118b7d082c829450c4408b4c"
      ],
      "author": {
        "name": "d-wang-commit",
        "email": "d.wang.commit@gmail.com",
        "time": "Sat Oct 31 11:50:12 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Oct 31 11:50:12 2026 +0800"
      },
      "message": "Prevent stopping heartbeats from reviving stopped nodes (#19048)\n\nReject non-forced Stopped-to-ReadOnly(Stopping) transitions in ConfigNode.\nPreserve other recovery paths and forced updates, with cache and persistence regression tests."
    },
    {
      "commit": "3a51384b2dcc8c29118b7d082c829450c4408b4c",
      "tree": "4536f8f5d5cd611d1be4a4dfd7c5dc737d53a859",
      "parents": [
        "378196eaf6cf9203c972ab9d561c4285ad455773"
      ],
      "author": {
        "name": "Caideyipi",
        "email": "87789683+Caideyipi@users.noreply.github.com",
        "time": "Fri Oct 30 14:23:28 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 30 14:23:28 2026 +0800"
      },
      "message": "Fix flaky SHOW RECEIVERS lifecycle assertions (#19061)"
    },
    {
      "commit": "378196eaf6cf9203c972ab9d561c4285ad455773",
      "tree": "a36110206001b449441c0ad15e5af329d4981a2d",
      "parents": [
        "3f36587d7c4a775ca215fd45ff29d2a7b788944a"
      ],
      "author": {
        "name": "Caideyipi",
        "email": "87789683+Caideyipi@users.noreply.github.com",
        "time": "Fri Oct 30 12:50:20 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 30 12:50:20 2026 +0800"
      },
      "message": "[Subscription] Preserve trailing consensus progress broadcasts (#19057)\n\n* Fix trailing consensus subscription progress broadcasts\n\n* Fix subscription broadcast state lifecycle\n\n* Strengthen subscription broadcast lifecycle test\n\n* Strengthen rejected broadcast schedule assertion"
    },
    {
      "commit": "3f36587d7c4a775ca215fd45ff29d2a7b788944a",
      "tree": "991713265e4a941ff272fc097a675f16ce08a391",
      "parents": [
        "45c962bc4c23fca8a9fd098270768fe7241e66bc"
      ],
      "author": {
        "name": "alpass163",
        "email": "alpass163@163.com",
        "time": "Fri Oct 30 12:46:16 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 30 12:46:16 2026 +0800"
      },
      "message": "Downgrade the level of log when auto sync column schema (#19060)"
    },
    {
      "commit": "45c962bc4c23fca8a9fd098270768fe7241e66bc",
      "tree": "6c2e120cbf580679e1f64f684ad70580b6aecdc6",
      "parents": [
        "56aca60610f1547d5cb822391ddb24773bd9f82c"
      ],
      "author": {
        "name": "Zhenyu Luo",
        "email": "zhenyu@apache.org",
        "time": "Fri Oct 30 12:17:45 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 30 12:17:45 2026 +0800"
      },
      "message": "Fix the identity used by the asynchronous LOAD of the pipe receiver (#19029)\n\n* Fix the identity used by the asynchronous LOAD of the pipe receiver\n\nThe load attributes of a TsFile received by the pipe receiver were built from the\ndefault user instead of from the sender of the transfer. The receiver now passes\nthe authenticated sender to the active loader, and a seal request whose user can\nnot be determined is rejected. The type mismatch converter inherits the identity\nof the load request. TsFiles placed directly in the active listening directory are\nstill loaded with the default user.\n\nTests: IoTDBPipeReceiverAsyncLoadAuthIT and IoTDBDataNodeReceiverTest.\n\n* Fix the user resolution in the LOAD pipelines\n\nSeveral places substituted the default user when a load carried no identity.\nLoadUtil, ActiveLoadTsFileLoader and the type mismatch converter now require the\nuser of the load and fail otherwise, while a TsFile placed directly in the active\nlistening directory still falls back to the default user. The worker session of\nthe active loader is created after the per-file identity is known, and the thrift\npipe receiver returns NOT_LOGIN instead of dereferencing a missing session.\n\nTests: LoadUtilTest and IoTDBPipeReceiverAsyncLoadAuthIT.\n\n* Fix the identity resolution of the pipe receiver\n\nThe V2 handshake took the user id from the handshake parameters, and the receiver\nfell back to default credentials when the handshake carried none. The receiver now\nresolves the identity from the handshake user name with the local user manager or\nthe permission manager, creates the audit entity only after a successful login,\nand clears it when the handshake fails or the connection exits. Two null pointer\nexceptions on the LOAD paths are fixed as well.\n\nTests: IoTDBFileReceiverTest and IoTDBDataNodeReceiverAuditEntityTest.\n\n* Fix the identity binding of a pipe transfer connection\n\nA connection that was already authenticated kept the identity of its first\ntransfer while the audit entity followed the new handshake. A handshake that does\nnot match the user of the connection is now rejected with NO_PERMISSION, and the\nidentity of a transfer is resolved from the verified user name, with the address\nof the connection preferred over the hostname of the handshake.\n\nTests: IoTDBFileReceiverTest.\n\n* Harden the user resolution of the pipe receiver and the load pipeline\n\n- Use \"{}\" placeholders in the new LOG_ templates and keep the en and zh\n  constants in parity.\n- Fail closed when the session of a pipe connection is not logged in: an\n  unauthenticated session still carries the id of the super user.\n- Resolve the user id of a load from its user name instead of trusting the\n  default id of the session, in the tree model schema verifier and in the\n  TsFile data type converter.\n- Allow a local TsFile that is dropped into a sub directory of the active\n  listening directory to be loaded with the default user, while a file that\n  carries attributes but no user is still rejected.\n\n* Make the load user identity requirement configurable\n\nThe pipe receiver and the LOAD pipeline now fail when the user that\nexecutes a load can not be resolved. Keep the legacy default-user\nfallback by default and gate the strict behavior behind two internal\nswitches instead of changing the existing load code:\n\n- pipe_receiver_require_user_identity (default false): an asynchronous\n  LOAD of the pipe receiver without an authenticated sender is executed\n  as the default user instead of being rejected.\n- load_require_user_identity (default false): an asynchronous LOAD\n  without a user is queued with the default user instead of letting the\n  strict LoadUtil check reject it.\n\nThe switches are not added to iotdb-system.properties.template and\ntherefore stay internal. ActiveLoadTsFileLoader, LoadTsFileDataTypeConverter,\nLoadUtil and TreeSchemaAutoCreatorAndVerifier keep the behavior of this\nbranch.\n\nTests: LoadUtilTest, ActiveLoadTsFileLoaderTest, IoTDBDataNodeReceiverTest\nand LoadTsFileAnalyzerTest.\n\n* Keep the load user identity switches minimal\n\nReduce the diff of the configurable load identity requirement:\n\n- Move the LOAD switch back into LoadUtil so LoadTsFileAnalyzer keeps the\n  behavior of this branch.\n- Read the two switches only when the properties are loaded; they are not\n  hot reloadable.\n- Shorten the comments and javadocs of the new switches.\n\nActiveLoadTsFileLoader, LoadTsFileDataTypeConverter, TreeSchemaAutoCreatorAndVerifier\nand the asynchronous LOAD acknowledgement semantics are unchanged.\n\nTests: LoadUtilTest.\n\n* Drop the redundant user resolution in the LOAD pipeline\n\nThe load path already carries a locally resolved user and LoadUtil always\nqueues a user when the strict switch is enabled, so the extra resolution\nlayers are redundant:\n\n- TreeSchemaAutoCreatorAndVerifier uses the user of the load session again\n  instead of resolving the id per measurement.\n- ActiveLoadTsFileLoader uses the user attribute with the default user as\n  fallback, instead of walking the listening directory and failing files.\n- Remove the i18n constants that are no longer used.\n\nTests: LoadUtilTest, ActiveLoadTsFileLoaderTest, IoTDBDataNodeReceiverTest,\nLoadTsFileAnalyzerTest.\n\n* Keep the legacy user fallback of LoadUtil\n\nLoadUtil only needs to use the user name of the session when it is present\nand fall back to the default user otherwise, which is what the original\ncode does. Drop the strict switch and restore the original method.\n\nRemove the now unused i18n constant.\n\nTests: LoadUtilTest, ActiveLoadTsFileLoaderTest, IoTDBDataNodeReceiverTest,\nLoadTsFileAnalyzerTest.\n\n* Require a logged in user when the load identity switches are enabled\n\n- pipe_receiver_require_user_identity: the asynchronous LOAD of the pipe\n  receiver requires the authenticated sender to be the logged in user of\n  the connection.\n- load_require_user_identity: a LOAD without a user requires a logged in\n  session that carries a user name instead of falling back to the default\n  user.\n\nBoth switches keep the legacy fallback when they are disabled.\n\nTests: LoadUtilTest, ActiveLoadTsFileLoaderTest, IoTDBDataNodeReceiverTest,\nLoadTsFileAnalyzerTest.\n\n* Align the legacy receiver runtime test and cover local LOAD options\n\n- A V1 handshake carries no credentials, so the receiver runtime reports an\n  unknown user instead of the default user. Update the legacy receiver\n  expectation accordingly, keeping the removal of privileged defaults.\n- Add a regression test for a locally dropped TsFile under an attribute\n  directory without a user; such a local input must still be loaded with the\n  default user.\n\n* Require an authenticated sender for asynchronous LOAD by default\n\nEnable pipe_receiver_require_user_identity by default: the receiver only\nqueues an asynchronous LOAD when the sender is authenticated and the\nconnection is logged in as that user. Set the switch to false to restore\nthe legacy default user fallback. The load_require_user_identity switch\nkeeps its default (false).\n\nTests: LoadUtilTest, ActiveLoadTsFileLoaderTest, IoTDBDataNodeReceiverTest,\nLoadTsFileAnalyzerTest.\n\n* Compare the number of points of the replicas instead of their TsFile sizes\n\nThe restart case waited until every data region replica on the restarted\nDataNode had the same on-disk size as the other replicas of that region. A\nreplica that replayed the LOAD can keep the same points in fewer physical\nTsFiles than the replicas that stayed up, so the sizes never converge and\nthe case fails with a size mismatch that says nothing about the data.\n\nHard-link the TsFiles of every replica of a region into\n\u003ctemp dir\u003e/\u003cregion\u003e/\u003cDataNode\u003e/, read them back point by point, and wait\nuntil all replicas of the region hold the same number of points. Duplicate\nphysical copies collapse in the point set, so the check no longer depends on\nhow the same data is spread over files. Every waiting attempt deletes its\nsnapshots, and tearDownClass removes what an interrupted attempt left behind."
    },
    {
      "commit": "56aca60610f1547d5cb822391ddb24773bd9f82c",
      "tree": "661da4a5ccc425673315a498db9b93a71c9b3169",
      "parents": [
        "1c2e3c8e88f1c81bc57cba570adc6a728cec9872"
      ],
      "author": {
        "name": "Jackie Tien",
        "email": "jackietien97@gmail.com",
        "time": "Fri Oct 30 12:17:18 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 30 12:17:18 2026 +0800"
      },
      "message": "Document IT discovery and reliability guidelines (#19058)"
    },
    {
      "commit": "1c2e3c8e88f1c81bc57cba570adc6a728cec9872",
      "tree": "b28ee348d4b55ad7d14bbd415d91fc820a4ead54",
      "parents": [
        "45a78ca18e1198779ef4fe2b212aa84ce3dba624"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Fri Oct 30 12:03:51 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 30 12:03:51 2026 +0800"
      },
      "message": "Bump org.xerial.snappy:snappy-java from 1.1.10.5 to 1.1.10.9 (#19038)\n\n* Bump org.xerial.snappy:snappy-java from 1.1.10.5 to 1.1.10.9\n\nBumps [org.xerial.snappy:snappy-java](https://github.com/xerial/snappy-java) from 1.1.10.5 to 1.1.10.9.\n- [Release notes](https://github.com/xerial/snappy-java/releases)\n- [Commits](https://github.com/xerial/snappy-java/compare/v1.1.10.5...v1.1.10.9)\n\n---\nupdated-dependencies:\n- dependency-name: org.xerial.snappy:snappy-java\n  dependency-version: 1.1.10.9\n  dependency-type: direct:production\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\n\n* Updated snappy-java dependency version from 1.1.10.5 to 1.1.10.9.\n\n---------\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e\nCo-authored-by: Haonan \u003chhaonan@outlook.com\u003e"
    }
  ],
  "next": "45a78ca18e1198779ef4fe2b212aa84ce3dba624"
}
