This is an automated email from the ASF dual-hosted git repository.
jiangtian pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/iotdb.git
The following commit(s) were added to refs/heads/master by this push:
new 925f7cc8749 Optimize table cache leader implement 2 (#14278)
925f7cc8749 is described below
commit 925f7cc874974d300040725aefa27e2be258efda
Author: Haonan <[email protected]>
AuthorDate: Tue Dec 3 11:46:31 2024 +0800
Optimize table cache leader implement 2 (#14278)
---
.../src/main/java/org/apache/iotdb/session/Session.java | 5 +++++
.../java/org/apache/iotdb/session/util/SessionUtils.java | 15 +++++++++++++++
2 files changed, 20 insertions(+)
diff --git
a/iotdb-client/session/src/main/java/org/apache/iotdb/session/Session.java
b/iotdb-client/session/src/main/java/org/apache/iotdb/session/Session.java
index 63eb0b77701..3fbdb4214ff 100644
--- a/iotdb-client/session/src/main/java/org/apache/iotdb/session/Session.java
+++ b/iotdb-client/session/src/main/java/org/apache/iotdb/session/Session.java
@@ -2729,6 +2729,9 @@ public class Session implements ISession {
*/
public void insertRelationalTablet(Tablet tablet)
throws IoTDBConnectionException, StatementExecutionException {
+ if (tablet.getRowSize() == 0) {
+ return;
+ }
if (enableRedirection) {
insertRelationalTabletWithLeaderCache(tablet);
} else {
@@ -2750,6 +2753,8 @@ public class Session implements ISession {
Map<SessionConnection, Tablet> relationalTabletGroup = new HashMap<>();
if (tableModelDeviceIdToEndpoint.isEmpty()) {
relationalTabletGroup.put(defaultSessionConnection, tablet);
+ } else if (SessionUtils.isTabletContainsSingleDevice(tablet)) {
+ relationalTabletGroup.put(getSessionConnection(tablet.getDeviceID(0)),
tablet);
} else {
for (int i = 0; i < tablet.getRowSize(); i++) {
IDeviceID iDeviceID = tablet.getDeviceID(i);
diff --git
a/iotdb-client/session/src/main/java/org/apache/iotdb/session/util/SessionUtils.java
b/iotdb-client/session/src/main/java/org/apache/iotdb/session/util/SessionUtils.java
index 5febc232f07..0ec1eb1621a 100644
---
a/iotdb-client/session/src/main/java/org/apache/iotdb/session/util/SessionUtils.java
+++
b/iotdb-client/session/src/main/java/org/apache/iotdb/session/util/SessionUtils.java
@@ -25,6 +25,7 @@ import org.apache.iotdb.rpc.UrlUtils;
import org.apache.tsfile.common.conf.TSFileConfig;
import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.file.metadata.IDeviceID;
import org.apache.tsfile.utils.Binary;
import org.apache.tsfile.utils.BitMap;
import org.apache.tsfile.utils.BytesUtils;
@@ -344,6 +345,20 @@ public class SessionUtils {
}
}
+ /* Used for table model insert only. */
+ public static boolean isTabletContainsSingleDevice(Tablet tablet) {
+ if (tablet.getRowSize() == 1) {
+ return true;
+ }
+ IDeviceID firstDeviceId = tablet.getDeviceID(0);
+ for (int i = 1; i < tablet.getRowSize(); ++i) {
+ if (!firstDeviceId.equals(tablet.getDeviceID(i))) {
+ return false;
+ }
+ }
+ return true;
+ }
+
public static List<TEndPoint> parseSeedNodeUrls(List<String> nodeUrls) {
if (nodeUrls == null) {
throw new NumberFormatException("nodeUrls is null");