Skip to content

Commit 87dc2ca

Browse files
authored
Tsfile java interfaces & Subscription: The usage of bitmap in SubscriptionSessionDataSet may cause npe (apache#14124)
* fix compile * fix compile * fix compile * fix row count * make Tablet.rowSize access to private * update tsfile version * fix example * remove tsfile-java module * remove tsfile-java module * fix ut * fix example * spotless * revert example/session/pom.xml * fix ut * fix ut * fix npe * update tsfile version
1 parent 355abf5 commit 87dc2ca

File tree

233 files changed

+1653
-1424
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

233 files changed

+1653
-1424
lines changed

example/pipe-count-point-processor/src/main/java/org/apache/iotdb/CountPointProcessor.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ public void customize(
5959
public void process(
6060
final TabletInsertionEvent tabletInsertionEvent, final EventCollector eventCollector) {
6161
tabletInsertionEvent.processTablet(
62-
(tablet, rowCollector) -> writePointCount.addAndGet(tablet.rowSize));
62+
(tablet, rowCollector) -> writePointCount.addAndGet(tablet.getRowSize()));
6363
}
6464

6565
@Override
@@ -71,7 +71,6 @@ public void process(final Event event, final EventCollector eventCollector) thro
7171
Collections.singletonList(
7272
new MeasurementSchema(aggregateSeries.getMeasurement(), TSDataType.INT64)),
7373
1);
74-
tablet.rowSize = 1;
7574
tablet.addTimestamp(0, System.currentTimeMillis());
7675
tablet.addValue(aggregateSeries.getMeasurement(), 0, writePointCount.get());
7776
eventCollector.collect(

example/session/src/main/java/org/apache/iotdb/AlignedTimeseriesSessionExample.java

Lines changed: 30 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -309,20 +309,21 @@ private static void insertTabletWithAlignedTimeseriesMethod1()
309309
long timestamp = 1;
310310

311311
for (long row = 1; row < 100; row++) {
312-
int rowIndex = tablet.rowSize++;
312+
int rowIndex = tablet.getRowSize();
313313
tablet.addTimestamp(rowIndex, timestamp);
314314
tablet.addValue(
315-
schemaList.get(0).getMeasurementId(), rowIndex, new SecureRandom().nextLong());
316-
tablet.addValue(schemaList.get(1).getMeasurementId(), rowIndex, new SecureRandom().nextInt());
315+
schemaList.get(0).getMeasurementName(), rowIndex, new SecureRandom().nextLong());
316+
tablet.addValue(
317+
schemaList.get(1).getMeasurementName(), rowIndex, new SecureRandom().nextInt());
317318

318-
if (tablet.rowSize == tablet.getMaxRowNumber()) {
319+
if (tablet.getRowSize() == tablet.getMaxRowNumber()) {
319320
session.insertAlignedTablet(tablet, true);
320321
tablet.reset();
321322
}
322323
timestamp++;
323324
}
324325

325-
if (tablet.rowSize != 0) {
326+
if (tablet.getRowSize() != 0) {
326327
session.insertAlignedTablet(tablet);
327328
tablet.reset();
328329
}
@@ -344,22 +345,22 @@ private static void insertTabletWithAlignedTimeseriesMethod2()
344345
Object[] values = tablet.values;
345346

346347
for (long time = 100; time < 200; time++) {
347-
int row = tablet.rowSize++;
348-
timestamps[row] = time;
348+
int row = tablet.getRowSize();
349+
tablet.addTimestamp(row, time);
349350

350351
long[] sensor1 = (long[]) values[0];
351352
sensor1[row] = new SecureRandom().nextLong();
352353

353354
int[] sensor2 = (int[]) values[1];
354355
sensor2[row] = new SecureRandom().nextInt();
355356

356-
if (tablet.rowSize == tablet.getMaxRowNumber()) {
357+
if (tablet.getRowSize() == tablet.getMaxRowNumber()) {
357358
session.insertAlignedTablet(tablet, true);
358359
tablet.reset();
359360
}
360361
}
361362

362-
if (tablet.rowSize != 0) {
363+
if (tablet.getRowSize() != 0) {
363364
session.insertAlignedTablet(tablet, true);
364365
tablet.reset();
365366
}
@@ -385,8 +386,8 @@ private static void insertNullableTabletWithAlignedTimeseries()
385386

386387
bitMaps[1] = new BitMap(tablet.getMaxRowNumber());
387388
for (long time = 200; time < 300; time++) {
388-
int row = tablet.rowSize++;
389-
timestamps[row] = time;
389+
int row = tablet.getRowSize();
390+
tablet.addTimestamp(row, time);
390391

391392
long[] sensor1 = (long[]) values[0];
392393
sensor1[row] = new SecureRandom().nextLong();
@@ -399,14 +400,14 @@ private static void insertNullableTabletWithAlignedTimeseries()
399400
bitMaps[1].mark(row);
400401
}
401402

402-
if (tablet.rowSize == tablet.getMaxRowNumber()) {
403+
if (tablet.getRowSize() == tablet.getMaxRowNumber()) {
403404
session.insertAlignedTablet(tablet, true);
404405
tablet.reset();
405406
bitMaps[1].reset();
406407
}
407408
}
408409

409-
if (tablet.rowSize != 0) {
410+
if (tablet.getRowSize() != 0) {
410411
session.insertAlignedTablet(tablet, true);
411412
tablet.reset();
412413
}
@@ -567,19 +568,19 @@ private static void insertTabletsWithAlignedTimeseries()
567568
// Method 1 to add tablet data
568569
long timestamp = System.currentTimeMillis();
569570
for (long row = 0; row < 100; row++) {
570-
int row1 = tablet1.rowSize++;
571-
int row2 = tablet2.rowSize++;
572-
int row3 = tablet3.rowSize++;
571+
int row1 = tablet1.getRowSize();
572+
int row2 = tablet2.getRowSize();
573+
int row3 = tablet3.getRowSize();
573574
tablet1.addTimestamp(row1, timestamp);
574575
tablet2.addTimestamp(row2, timestamp);
575576
tablet3.addTimestamp(row3, timestamp);
576577
for (int i = 0; i < 2; i++) {
577578
long value = new SecureRandom().nextLong();
578-
tablet1.addValue(schemaList1.get(i).getMeasurementId(), row1, value);
579-
tablet2.addValue(schemaList2.get(i).getMeasurementId(), row2, value);
580-
tablet3.addValue(schemaList3.get(i).getMeasurementId(), row3, value);
579+
tablet1.addValue(schemaList1.get(i).getMeasurementName(), row1, value);
580+
tablet2.addValue(schemaList2.get(i).getMeasurementName(), row2, value);
581+
tablet3.addValue(schemaList3.get(i).getMeasurementName(), row3, value);
581582
}
582-
if (tablet1.rowSize == tablet1.getMaxRowNumber()) {
583+
if (tablet1.getRowSize() == tablet1.getMaxRowNumber()) {
583584
session.insertAlignedTablets(tabletMap, true);
584585
tablet1.reset();
585586
tablet2.reset();
@@ -588,7 +589,7 @@ private static void insertTabletsWithAlignedTimeseries()
588589
timestamp++;
589590
}
590591

591-
if (tablet1.rowSize != 0) {
592+
if (tablet1.getRowSize() != 0) {
592593
session.insertAlignedTablets(tabletMap, true);
593594
tablet1.reset();
594595
tablet2.reset();
@@ -604,12 +605,12 @@ private static void insertTabletsWithAlignedTimeseries()
604605
Object[] values3 = tablet3.values;
605606

606607
for (long time = 0; time < 100; time++) {
607-
int row1 = tablet1.rowSize++;
608-
int row2 = tablet2.rowSize++;
609-
int row3 = tablet3.rowSize++;
610-
timestamps1[row1] = time;
611-
timestamps2[row2] = time;
612-
timestamps3[row3] = time;
608+
int row1 = tablet1.getRowSize();
609+
int row2 = tablet2.getRowSize();
610+
int row3 = tablet3.getRowSize();
611+
tablet1.addTimestamp(row1, time);
612+
tablet2.addTimestamp(row2, time);
613+
tablet3.addTimestamp(row3, time);
613614
for (int i = 0; i < 2; i++) {
614615
long[] sensor1 = (long[]) values1[i];
615616
sensor1[row1] = i;
@@ -618,7 +619,7 @@ private static void insertTabletsWithAlignedTimeseries()
618619
long[] sensor3 = (long[]) values3[i];
619620
sensor3[row3] = i;
620621
}
621-
if (tablet1.rowSize == tablet1.getMaxRowNumber()) {
622+
if (tablet1.getRowSize() == tablet1.getMaxRowNumber()) {
622623
session.insertAlignedTablets(tabletMap, true);
623624

624625
tablet1.reset();
@@ -627,7 +628,7 @@ private static void insertTabletsWithAlignedTimeseries()
627628
}
628629
}
629630

630-
if (tablet1.rowSize != 0) {
631+
if (tablet1.getRowSize() != 0) {
631632
session.insertAlignedTablets(tabletMap, true);
632633
tablet1.reset();
633634
tablet2.reset();

example/session/src/main/java/org/apache/iotdb/DataMigrationExample.java

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -141,53 +141,55 @@ public Void call() {
141141
}
142142
tablet = new Tablet(device, schemaList, 300000);
143143
while (dataIter.next()) {
144-
int row = tablet.rowSize++;
145-
tablet.timestamps[row] = dataIter.getLong(1);
144+
int row = tablet.getRowSize();
145+
tablet.addTimestamp(row, dataIter.getLong(1));
146146
for (int j = 0; j < schemaList.size(); ++j) {
147147
if (dataIter.isNull(j + 2)) {
148-
tablet.addValue(schemaList.get(j).getMeasurementId(), row, null);
148+
tablet.addValue(schemaList.get(j).getMeasurementName(), row, null);
149149
continue;
150150
}
151151
switch (schemaList.get(j).getType()) {
152152
case BOOLEAN:
153153
tablet.addValue(
154-
schemaList.get(j).getMeasurementId(), row, dataIter.getBoolean(j + 2));
154+
schemaList.get(j).getMeasurementName(), row, dataIter.getBoolean(j + 2));
155155
break;
156156
case INT32:
157-
tablet.addValue(schemaList.get(j).getMeasurementId(), row, dataIter.getInt(j + 2));
157+
tablet.addValue(
158+
schemaList.get(j).getMeasurementName(), row, dataIter.getInt(j + 2));
158159
break;
159160
case INT64:
160161
case TIMESTAMP:
161-
tablet.addValue(schemaList.get(j).getMeasurementId(), row, dataIter.getLong(j + 2));
162+
tablet.addValue(
163+
schemaList.get(j).getMeasurementName(), row, dataIter.getLong(j + 2));
162164
break;
163165
case FLOAT:
164166
tablet.addValue(
165-
schemaList.get(j).getMeasurementId(), row, dataIter.getFloat(j + 2));
167+
schemaList.get(j).getMeasurementName(), row, dataIter.getFloat(j + 2));
166168
break;
167169
case DOUBLE:
168170
tablet.addValue(
169-
schemaList.get(j).getMeasurementId(), row, dataIter.getDouble(j + 2));
171+
schemaList.get(j).getMeasurementName(), row, dataIter.getDouble(j + 2));
170172
break;
171173
case TEXT:
172174
case STRING:
173175
tablet.addValue(
174-
schemaList.get(j).getMeasurementId(), row, dataIter.getString(j + 2));
176+
schemaList.get(j).getMeasurementName(), row, dataIter.getString(j + 2));
175177
break;
176178
case DATE:
177179
case BLOB:
178180
tablet.addValue(
179-
schemaList.get(j).getMeasurementId(), row, dataIter.getObject(j + 2));
181+
schemaList.get(j).getMeasurementName(), row, dataIter.getObject(j + 2));
180182
break;
181183
default:
182184
LOGGER.info("Migration of this type of data is not supported");
183185
}
184186
}
185-
if (tablet.rowSize == tablet.getMaxRowNumber()) {
187+
if (tablet.getRowSize() == tablet.getMaxRowNumber()) {
186188
writerPool.insertTablet(tablet, true);
187189
tablet.reset();
188190
}
189191
}
190-
if (tablet.rowSize != 0) {
192+
if (tablet.getRowSize() != 0) {
191193
writerPool.insertTablet(tablet);
192194
tablet.reset();
193195
}

example/session/src/main/java/org/apache/iotdb/HybridTimeseriesSessionExample.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -88,19 +88,19 @@ private static void insertTabletWithAlignedTimeseriesMethod(int minTime, int max
8888
long timestamp = minTime;
8989

9090
for (long row = minTime; row < maxTime; row++) {
91-
int rowIndex = tablet.rowSize++;
91+
int rowIndex = tablet.getRowSize();
9292
tablet.addTimestamp(rowIndex, timestamp);
93-
tablet.addValue(schemaList.get(0).getMeasurementId(), rowIndex, row * 10 + 1L);
94-
tablet.addValue(schemaList.get(1).getMeasurementId(), rowIndex, (int) (row * 10 + 2));
93+
tablet.addValue(schemaList.get(0).getMeasurementName(), rowIndex, row * 10 + 1L);
94+
tablet.addValue(schemaList.get(1).getMeasurementName(), rowIndex, (int) (row * 10 + 2));
9595

96-
if (tablet.rowSize == tablet.getMaxRowNumber()) {
96+
if (tablet.getRowSize() == tablet.getMaxRowNumber()) {
9797
session.insertAlignedTablet(tablet, true);
9898
tablet.reset();
9999
}
100100
timestamp++;
101101
}
102102

103-
if (tablet.rowSize != 0) {
103+
if (tablet.getRowSize() != 0) {
104104
session.insertAlignedTablet(tablet);
105105
tablet.reset();
106106
}

example/session/src/main/java/org/apache/iotdb/SessionConcurrentExample.java

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -154,20 +154,20 @@ private static void insertTablet(Session session, String deviceId)
154154
// Method 1 to add tablet data
155155
long timestamp = System.currentTimeMillis();
156156
for (long row = 0; row < 100; row++) {
157-
int rowIndex = tablet.rowSize++;
157+
int rowIndex = tablet.getRowSize();
158158
tablet.addTimestamp(rowIndex, timestamp);
159159
for (int s = 0; s < 3; s++) {
160160
long value = random.nextLong();
161-
tablet.addValue(schemaList.get(s).getMeasurementId(), rowIndex, value);
161+
tablet.addValue(schemaList.get(s).getMeasurementName(), rowIndex, value);
162162
}
163-
if (tablet.rowSize == tablet.getMaxRowNumber()) {
163+
if (tablet.getRowSize() == tablet.getMaxRowNumber()) {
164164
session.insertTablet(tablet, true);
165165
tablet.reset();
166166
}
167167
timestamp++;
168168
}
169169

170-
if (tablet.rowSize != 0) {
170+
if (tablet.getRowSize() != 0) {
171171
session.insertTablet(tablet);
172172
tablet.reset();
173173
}
@@ -177,19 +177,19 @@ private static void insertTablet(Session session, String deviceId)
177177
Object[] values = tablet.values;
178178

179179
for (long time = 0; time < 100; time++) {
180-
int row = tablet.rowSize++;
181-
timestamps[row] = time;
180+
int row = tablet.getRowSize();
181+
tablet.addTimestamp(row, time);
182182
for (int i = 0; i < 3; i++) {
183183
long[] sensor = (long[]) values[i];
184184
sensor[row] = i;
185185
}
186-
if (tablet.rowSize == tablet.getMaxRowNumber()) {
186+
if (tablet.getRowSize() == tablet.getMaxRowNumber()) {
187187
session.insertTablet(tablet, true);
188188
tablet.reset();
189189
}
190190
}
191191

192-
if (tablet.rowSize != 0) {
192+
if (tablet.getRowSize() != 0) {
193193
session.insertTablet(tablet);
194194
tablet.reset();
195195
}

0 commit comments

Comments
 (0)