This is an automated email from the ASF dual-hosted git repository.

CritasWang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/iotdb-extras.git


The following commit(s) were added to refs/heads/master by this push:
     new 1c60314  Add the required ts_latest cluster mode to the ThingsBoard 
migration guide (#137)
1c60314 is described below

commit 1c60314e9126d71a38217513a2343eb02f191cae
Author: ZIHAN DAI <[email protected]>
AuthorDate: Sat Oct 10 19:05:22 2026 +1100

    Add the required ts_latest cluster mode to the ThingsBoard migration guide 
(#137)
    
    The latest-value route fails at startup unless iotdb.ts_latest.cluster_mode
    is set to sticky-routing or disabled (IoTDBTableLatestDao checks it when it
    is constructed), but the selector table and the step 3 example in the
    migration guide leave it out. Following the example as written stops
    ThingsBoard with an IllegalStateException.
    
    Add the property to the table and the example, and say what the two values
    mean. Also drop the note that the attributes route needs a ThingsBoard
    build exposing an attribute selector: the module supplies that selector
    and withdraws JpaAttributeDao itself on ThingsBoard 4.3.1.2, as the README
    and user guide already say.
    
    Signed-off-by: Zihan Dai <[email protected]>
---
 iotdb-thingsboard-table/docs/migration-guide.md | 22 ++++++++++++++++------
 1 file changed, 16 insertions(+), 6 deletions(-)

diff --git a/iotdb-thingsboard-table/docs/migration-guide.md 
b/iotdb-thingsboard-table/docs/migration-guide.md
index 3fbba63..e27b428 100644
--- a/iotdb-thingsboard-table/docs/migration-guide.md
+++ b/iotdb-thingsboard-table/docs/migration-guide.md
@@ -108,7 +108,7 @@ that route stays inert.
 | Route | Required properties | Default state |
 | --- | --- | --- |
 | Historical telemetry (raw read/write/delete) | 
`database.ts.type=iotdb-table` **and** `iotdb.ts.experimental-raw-only=true` | 
inert |
-| Latest value | `database.ts.type=iotdb-table` **and** 
`database.ts_latest.type=iotdb-table` **and** 
`iotdb.ts.experimental-raw-only=true` | inert |
+| Latest value | `database.ts.type=iotdb-table` **and** 
`database.ts_latest.type=iotdb-table` **and** 
`iotdb.ts.experimental-raw-only=true`; also requires 
`iotdb.ts_latest.cluster_mode` set to `sticky-routing` or `disabled` | inert |
 | Entity attributes (stretch) | `database.attributes.type=iotdb-table` 
(independent of the timeseries selectors); also requires 
`iotdb.attributes.cluster_mode` set to `sticky-routing` or `disabled` | inert |
 
 The latest route deliberately also requires the timeseries selector: the latest
@@ -163,11 +163,20 @@ example, to route both historical telemetry and latest 
values to IoTDB:
 database.ts.type=iotdb-table
 database.ts_latest.type=iotdb-table
 iotdb.ts.experimental-raw-only=true
+iotdb.ts_latest.cluster_mode=sticky-routing
 ```
 
-To additionally opt in to the stretch attributes route (only on a ThingsBoard
-build that exposes the attribute selector — no shipped release does yet, see
-*Limitations*):
+`iotdb.ts_latest.cluster_mode` is mandatory when the latest route is active.
+Choose `sticky-routing` when per-identity latest writes are pinned to one node,
+or `disabled` for single-node / acknowledged best-effort operation. Any other
+value, including the empty default, fails DAO construction because the latest
+overlay write path converges only within a single JVM. This property 
acknowledges
+your routing arrangement; it does not configure routing for you.
+
+To additionally opt in to the stretch attributes route, use the selector 
supplied
+by this module. On ThingsBoard 4.3.1.2, the module withdraws the host
+`JpaAttributeDao` at startup and logs a WARN; see *Coexistence and rollback* 
for
+the exact matching rule and conflict-guard boundary:
 
 ```properties
 database.attributes.type=iotdb-table
@@ -385,8 +394,9 @@ module `README.md` for the authoritative list):
 - **The attributes route is a stretch / Phase-2 opt-in.** 
`database.attributes.type`
   is a selector this module supplies rather than one ThingsBoard offers; 
leaving it
   unset is the default posture, and while unset attributes stay in the host 
entity
-  database. Setting it makes the module withdraw ThingsBoard's own attributes 
bean
-  — see the conflict-guard bullet above for the matching rule and its boundary.
+  database. On ThingsBoard 4.3.1.2, setting it makes the module withdraw the 
host
+  `JpaAttributeDao` and log a WARN; no host-provided attribute selector is 
needed.
+  See the conflict-guard bullet above for the matching rule and its boundary.
   When activated, `save` is a
   non-atomic tag-only delete-then-insert under a per-identity in-JVM lock that
   converges only within one JVM; `findNextBatch` is unsupported

Reply via email to