Skip to content

Commit 14f264c

Browse files
CaideyipiJackieTien97
authored andcommitted
Fixed the NPE when validating legacy sink (#17153)
* npe-fix * unb
1 parent 920ced7 commit 14f264c

2 files changed

Lines changed: 18 additions & 26 deletions

File tree

integration-test/src/test/java/org/apache/iotdb/pipe/it/dual/treemodel/auto/basic/IoTDBPipeDataSinkIT.java

Lines changed: 11 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import org.apache.iotdb.commons.client.sync.SyncConfigNodeIServiceClient;
2424
import org.apache.iotdb.confignode.rpc.thrift.TCreatePipeReq;
2525
import org.apache.iotdb.db.it.utils.TestUtils;
26+
import org.apache.iotdb.it.env.EnvFactory;
2627
import org.apache.iotdb.it.env.cluster.node.DataNodeWrapper;
2728
import org.apache.iotdb.it.framework.IoTDBTestRunner;
2829
import org.apache.iotdb.itbase.category.MultiClusterIT2DualTreeAutoBasic;
@@ -35,6 +36,8 @@
3536
import org.junit.experimental.categories.Category;
3637
import org.junit.runner.RunWith;
3738

39+
import java.sql.Connection;
40+
import java.sql.Statement;
3841
import java.util.Arrays;
3942
import java.util.Collections;
4043
import java.util.HashMap;
@@ -218,30 +221,16 @@ public void testLegacyConnector() throws Exception {
218221
final String receiverIp = receiverDataNode.getIp();
219222
final int receiverPort = receiverDataNode.getPort();
220223

224+
try (final Connection connection = EnvFactory.getEnv().getConnection();
225+
final Statement statement = connection.createStatement()) {
226+
statement.execute(
227+
String.format(
228+
"create pipe testPipe ('sink'='iotdb-legacy-pipe-sink', 'ip'='%s', 'port'='%s', 'version'='1.3')",
229+
receiverIp, receiverPort));
230+
}
231+
221232
try (final SyncConfigNodeIServiceClient client =
222233
(SyncConfigNodeIServiceClient) senderEnv.getLeaderConfigNodeConnection()) {
223-
final Map<String, String> extractorAttributes = new HashMap<>();
224-
final Map<String, String> processorAttributes = new HashMap<>();
225-
final Map<String, String> connectorAttributes = new HashMap<>();
226-
227-
extractorAttributes.put("source.realtime.mode", "log");
228-
229-
connectorAttributes.put("sink", "iotdb-legacy-pipe-sink");
230-
connectorAttributes.put("sink.batch.enable", "false");
231-
connectorAttributes.put("sink.ip", receiverIp);
232-
connectorAttributes.put("sink.port", Integer.toString(receiverPort));
233-
234-
// This version does not matter since it's no longer checked by the legacy receiver
235-
connectorAttributes.put("sink.version", "1.3");
236-
237-
final TSStatus status =
238-
client.createPipe(
239-
new TCreatePipeReq("testPipe", connectorAttributes)
240-
.setExtractorAttributes(extractorAttributes)
241-
.setProcessorAttributes(processorAttributes));
242-
243-
Assert.assertEquals(TSStatusCode.SUCCESS_STATUS.getStatusCode(), status.getCode());
244-
245234
Assert.assertEquals(
246235
TSStatusCode.SUCCESS_STATUS.getStatusCode(), client.startPipe("testPipe").getCode());
247236

iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/sink/protocol/legacy/IoTDBLegacyPipeSink.java

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737
import org.apache.iotdb.db.pipe.event.common.tsfile.PipeTsFileInsertionEvent;
3838
import org.apache.iotdb.db.pipe.sink.payload.legacy.TsFilePipeData;
3939
import org.apache.iotdb.db.storageengine.StorageEngine;
40+
import org.apache.iotdb.db.storageengine.dataregion.DataRegion;
4041
import org.apache.iotdb.pipe.api.PipeConnector;
4142
import org.apache.iotdb.pipe.api.annotation.TreeModel;
4243
import org.apache.iotdb.pipe.api.customizer.configuration.PipeConnectorRuntimeConfiguration;
@@ -109,7 +110,7 @@ public class IoTDBLegacyPipeSink implements PipeConnector {
109110
private String syncConnectorVersion;
110111

111112
private String pipeName;
112-
private String databaseName;
113+
private String databaseName = "";
113114

114115
private IoTDBSyncClient client;
115116

@@ -202,10 +203,12 @@ public void customize(
202203
trustStore = parameters.getString(SINK_IOTDB_SSL_TRUST_STORE_PATH_KEY);
203204
trustStorePwd = parameters.getString(SINK_IOTDB_SSL_TRUST_STORE_PWD_KEY);
204205

205-
databaseName =
206+
final DataRegion dataRegion =
206207
StorageEngine.getInstance()
207-
.getDataRegion(new DataRegionId(configuration.getRuntimeEnvironment().getRegionId()))
208-
.getDatabaseName();
208+
.getDataRegion(new DataRegionId(configuration.getRuntimeEnvironment().getRegionId()));
209+
if (Objects.nonNull(dataRegion)) {
210+
databaseName = dataRegion.getDatabaseName();
211+
}
209212
}
210213

211214
@Override

0 commit comments

Comments
 (0)