Skip to content

Commit 280eb89

Browse files
committed
Merge master and address review comments
2 parents 9bd35fb + cec4f9b commit 280eb89

711 files changed

Lines changed: 41490 additions & 5327 deletions

File tree

Some content is hidden

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

‎.github/workflows/sonar-codecov.yml‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,11 +71,11 @@ jobs:
7171
if: github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name == 'apache/iotdb' || github.event_name == 'push'
7272
steps:
7373
- uses: actions/checkout@v5
74-
- name: Set up JDK 17
74+
- name: Set up JDK 21
7575
uses: actions/setup-java@v5
7676
with:
7777
distribution: corretto
78-
java-version: 17
78+
java-version: 21
7979
env:
8080
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
8181
- name: Cache Maven packages

‎LICENSE-binary‎

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -230,7 +230,7 @@ io.swagger.core.v3:swagger-integration-jakarta:2.2.50
230230
io.swagger.core.v3:swagger-jaxrs2-jakarta:2.2.50
231231
io.swagger.core.v3:swagger-models-jakarta:2.2.50
232232
jakarta.inject:jakarta.inject-api:2.0.1
233-
at.yawk.lz4:lz4-java:1.10.0
233+
at.yawk.lz4:lz4-java:1.11.1
234234
com.github.ben-manes.caffeine:caffeine:2.9.3
235235
org.eclipse.jetty:jetty-http:12.0.36
236236
org.eclipse.jetty:jetty-io:12.0.36
@@ -246,17 +246,17 @@ io.dropwizard.metrics:metrics-core:4.2.19
246246
io.dropwizard.metrics:metrics-jvm:3.2.2
247247
com.librato.metrics:metrics-librato:5.1.0
248248
com.github.moquette-io.moquette:moquette-broker:0.18
249-
io.netty:netty-buffer:4.1.134.Final
250-
io.netty:netty-codec:4.1.134.Final
251-
io.netty:netty-codec-http:4.1.134.Final
252-
io.netty:netty-codec-mqtt:4.1.134.Final
253-
io.netty:netty-common:4.1.134.Final
254-
io.netty:netty-handler:4.1.134.Final
255-
io.netty:netty-resolver:4.1.134.Final
256-
io.netty:netty-transport:4.1.134.Final
257-
io.netty:netty-transport-native-epoll:4.1.134.Final:linux-aarch_64
258-
io.netty:netty-transport-native-epoll:4.1.134.Final:linux-x86_64
259-
io.netty:netty-transport-native-unix-common:4.1.134.Final
249+
io.netty:netty-buffer:4.1.136.Final
250+
io.netty:netty-codec:4.1.136.Final
251+
io.netty:netty-codec-http:4.1.136.Final
252+
io.netty:netty-codec-mqtt:4.1.136.Final
253+
io.netty:netty-common:4.1.136.Final
254+
io.netty:netty-handler:4.1.136.Final
255+
io.netty:netty-resolver:4.1.136.Final
256+
io.netty:netty-transport:4.1.136.Final
257+
io.netty:netty-transport-native-epoll:4.1.136.Final:linux-aarch_64
258+
io.netty:netty-transport-native-epoll:4.1.136.Final:linux-x86_64
259+
io.netty:netty-transport-native-unix-common:4.1.136.Final
260260
org.osgi:org.osgi.core:7.0.0
261261
org.osgi:osgi.cmpn:7.0.0
262262
org.ops4j.pax.jdbc:pax-jdbc-common:1.5.6

‎dependencies.json‎

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@
2828
"com.google.j2objc:j2objc-annotations",
2929
"com.h2database:h2-mvstore",
3030
"com.sun.activation:jakarta.activation",
31-
"com.sun.istack:istack-commons-runtime",
3231
"com.zaxxer:HikariCP",
3332
"commons-cli:commons-cli",
3433
"commons-codec:commons-codec",
@@ -116,14 +115,11 @@
116115
"org.eclipse.jetty:jetty-session",
117116
"org.eclipse.jetty:jetty-util",
118117
"org.eclipse.jetty.ee10:jetty-ee10-servlet",
119-
"org.eclipse.milo:bsd-core",
120-
"org.eclipse.milo:bsd-generator",
121-
"org.eclipse.milo:sdk-client",
122-
"org.eclipse.milo:sdk-core",
123-
"org.eclipse.milo:sdk-server",
124-
"org.eclipse.milo:stack-client",
125-
"org.eclipse.milo:stack-core",
126-
"org.eclipse.milo:stack-server",
118+
"org.eclipse.milo:milo-sdk-client",
119+
"org.eclipse.milo:milo-sdk-core",
120+
"org.eclipse.milo:milo-sdk-server",
121+
"org.eclipse.milo:milo-stack-core",
122+
"org.eclipse.milo:milo-transport",
127123
"org.fusesource.hawtbuf:hawtbuf",
128124
"org.fusesource.hawtdispatch:hawtdispatch",
129125
"org.fusesource.hawtdispatch:hawtdispatch-transport",
@@ -133,8 +129,6 @@
133129
"org.glassfish.hk2:hk2-utils",
134130
"org.glassfish.hk2:osgi-resource-locator",
135131
"org.glassfish.hk2.external:aopalliance-repackaged",
136-
"org.glassfish.jaxb:jaxb-runtime",
137-
"org.glassfish.jaxb:txw2",
138132
"org.glassfish.jersey.containers:jersey-container-servlet-core",
139133
"org.glassfish.jersey.core:jersey-client",
140134
"org.glassfish.jersey.core:jersey-common",
@@ -145,6 +139,7 @@
145139
"org.java-websocket:Java-WebSocket",
146140
"org.javassist:javassist",
147141
"org.jline:jline",
142+
"org.jspecify:jspecify",
148143
"org.jvnet.mimepull:mimepull",
149144
"org.latencyutils:LatencyUtils",
150145
"org.ops4j.pax.jdbc:pax-jdbc-common",

‎example/pipe-opc-ua-sink/pom.xml‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,12 +31,12 @@
3131
<dependencies>
3232
<dependency>
3333
<groupId>org.eclipse.milo</groupId>
34-
<artifactId>sdk-client</artifactId>
34+
<artifactId>milo-sdk-client</artifactId>
3535
<version>${milo.version}</version>
3636
</dependency>
3737
<dependency>
3838
<groupId>org.eclipse.milo</groupId>
39-
<artifactId>sdk-server</artifactId>
39+
<artifactId>milo-sdk-server</artifactId>
4040
</dependency>
4141
</dependencies>
4242
<profiles>

‎example/pipe-opc-ua-sink/src/main/java/org/apache/iotdb/opcua/ClientExample.java‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@
2020
package org.apache.iotdb.opcua;
2121

2222
import org.eclipse.milo.opcua.sdk.client.OpcUaClient;
23-
import org.eclipse.milo.opcua.sdk.client.api.identity.AnonymousProvider;
24-
import org.eclipse.milo.opcua.sdk.client.api.identity.IdentityProvider;
23+
import org.eclipse.milo.opcua.sdk.client.identity.AnonymousProvider;
24+
import org.eclipse.milo.opcua.sdk.client.identity.IdentityProvider;
2525
import org.eclipse.milo.opcua.stack.core.security.SecurityPolicy;
2626
import org.eclipse.milo.opcua.stack.core.types.structured.EndpointDescription;
2727

‎example/pipe-opc-ua-sink/src/main/java/org/apache/iotdb/opcua/ClientExampleRunner.java‎

Lines changed: 30 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -21,13 +21,14 @@
2121

2222
import org.bouncycastle.jce.provider.BouncyCastleProvider;
2323
import org.eclipse.milo.opcua.sdk.client.OpcUaClient;
24-
import org.eclipse.milo.opcua.stack.client.security.DefaultClientCertificateValidator;
2524
import org.eclipse.milo.opcua.stack.core.Stack;
26-
import org.eclipse.milo.opcua.stack.core.security.DefaultTrustListManager;
25+
import org.eclipse.milo.opcua.stack.core.security.DefaultClientCertificateValidator;
26+
import org.eclipse.milo.opcua.stack.core.security.FileBasedCertificateQuarantine;
27+
import org.eclipse.milo.opcua.stack.core.security.FileBasedTrustListManager;
2728
import org.eclipse.milo.opcua.stack.core.types.builtin.LocalizedText;
2829
import org.slf4j.LoggerFactory;
2930

30-
import java.io.File;
31+
import java.io.IOException;
3132
import java.nio.file.Files;
3233
import java.nio.file.Path;
3334
import java.nio.file.Paths;
@@ -48,6 +49,7 @@ public class ClientExampleRunner {
4849
private final CompletableFuture<OpcUaClient> future = new CompletableFuture<>();
4950

5051
private final ClientExample clientExample;
52+
private FileBasedTrustListManager trustListManager;
5153

5254
public ClientExampleRunner(ClientExample clientExample) {
5355
this.clientExample = clientExample;
@@ -61,21 +63,24 @@ private OpcUaClient createClient() throws Exception {
6163
throw new Exception("unable to create security dir: " + securityTempDir);
6264
}
6365

64-
final File pkiDir = securityTempDir.resolve("pki").toFile();
66+
final Path pkiDir = securityTempDir.resolve("pki");
6567

6668
System.out.println("security dir: " + securityTempDir.toAbsolutePath());
67-
LoggerFactory.getLogger(getClass()).info("security pki dir: {}", pkiDir.getAbsolutePath());
69+
LoggerFactory.getLogger(getClass()).info("security pki dir: {}", pkiDir.toAbsolutePath());
6870

6971
final IoTDBKeyStoreLoaderClient loader = new IoTDBKeyStoreLoaderClient().load(securityTempDir);
7072

71-
final DefaultTrustListManager trustListManager = new DefaultTrustListManager(pkiDir);
73+
trustListManager = FileBasedTrustListManager.createAndInitialize(pkiDir);
74+
final FileBasedCertificateQuarantine certificateQuarantine =
75+
FileBasedCertificateQuarantine.create(pkiDir.resolve("rejected").resolve("certs"));
7276

7377
final DefaultClientCertificateValidator certificateValidator =
74-
new DefaultClientCertificateValidator(trustListManager);
78+
new DefaultClientCertificateValidator(trustListManager, certificateQuarantine);
7579

7680
return OpcUaClient.create(
7781
clientExample.getEndpointUrl(),
7882
endpoints -> endpoints.stream().filter(clientExample.endpointFilter()).findFirst(),
83+
transportBuilder -> {},
7984
configBuilder ->
8085
configBuilder
8186
.setApplicationName(LocalizedText.english("eclipse milo opc-ua client"))
@@ -85,8 +90,7 @@ private OpcUaClient createClient() throws Exception {
8590
.setCertificateChain(loader.getClientCertificateChain())
8691
.setCertificateValidator(certificateValidator)
8792
.setIdentityProvider(clientExample.getIdentityProvider())
88-
.setRequestTimeout(uint(5000))
89-
.build());
93+
.setRequestTimeout(uint(5000)));
9094
}
9195

9296
public void run() {
@@ -100,11 +104,13 @@ public void run() {
100104
}
101105

102106
try {
103-
client.disconnect().get();
104-
Stack.releaseSharedResources();
107+
client.disconnectAsync().get();
105108
} catch (InterruptedException | ExecutionException e) {
106109
Thread.currentThread().interrupt();
107110
System.out.println("Error disconnecting: {}" + e.getMessage());
111+
} finally {
112+
closeTrustListManager();
113+
Stack.releaseSharedResources();
108114
}
109115

110116
try {
@@ -126,6 +132,7 @@ public void run() {
126132
} catch (Throwable t) {
127133
System.out.println("Error getting client: {}" + t.getMessage());
128134

135+
closeTrustListManager();
129136
future.completeExceptionally(t);
130137

131138
try {
@@ -144,4 +151,16 @@ public void run() {
144151
e.printStackTrace();
145152
}
146153
}
154+
155+
private void closeTrustListManager() {
156+
if (trustListManager != null) {
157+
try {
158+
trustListManager.close();
159+
} catch (IOException e) {
160+
e.printStackTrace();
161+
} finally {
162+
trustListManager = null;
163+
}
164+
}
165+
}
147166
}

‎example/pipe-opc-ua-sink/src/main/java/org/apache/iotdb/opcua/ClientTest.java‎

Lines changed: 14 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -20,27 +20,18 @@
2020
package org.apache.iotdb.opcua;
2121

2222
import org.eclipse.milo.opcua.sdk.client.OpcUaClient;
23-
import org.eclipse.milo.opcua.sdk.client.api.subscriptions.UaMonitoredItem;
24-
import org.eclipse.milo.opcua.sdk.client.api.subscriptions.UaSubscription;
23+
import org.eclipse.milo.opcua.sdk.client.subscriptions.OpcUaMonitoredItem;
24+
import org.eclipse.milo.opcua.sdk.client.subscriptions.OpcUaSubscription;
2525
import org.eclipse.milo.opcua.stack.core.AttributeId;
2626
import org.eclipse.milo.opcua.stack.core.Identifiers;
27-
import org.eclipse.milo.opcua.stack.core.types.builtin.ExtensionObject;
2827
import org.eclipse.milo.opcua.stack.core.types.builtin.QualifiedName;
29-
import org.eclipse.milo.opcua.stack.core.types.builtin.unsigned.UInteger;
3028
import org.eclipse.milo.opcua.stack.core.types.enumerated.MonitoringMode;
31-
import org.eclipse.milo.opcua.stack.core.types.enumerated.TimestampsToReturn;
3229
import org.eclipse.milo.opcua.stack.core.types.structured.ContentFilter;
3330
import org.eclipse.milo.opcua.stack.core.types.structured.EventFilter;
34-
import org.eclipse.milo.opcua.stack.core.types.structured.MonitoredItemCreateRequest;
35-
import org.eclipse.milo.opcua.stack.core.types.structured.MonitoringParameters;
3631
import org.eclipse.milo.opcua.stack.core.types.structured.ReadValueId;
3732
import org.eclipse.milo.opcua.stack.core.types.structured.SimpleAttributeOperand;
3833

39-
import java.util.Collections;
40-
import java.util.List;
4134
import java.util.concurrent.CompletableFuture;
42-
import java.util.concurrent.atomic.AtomicInteger;
43-
import java.util.concurrent.atomic.AtomicLong;
4435

4536
import static org.eclipse.milo.opcua.stack.core.types.builtin.unsigned.Unsigned.uint;
4637

@@ -52,24 +43,19 @@ public static void main(String[] args) {
5243
new ClientExampleRunner(example).run();
5344
}
5445

55-
private final AtomicLong clientHandles = new AtomicLong(1L);
56-
5746
@Override
5847
public void run(OpcUaClient client, CompletableFuture<OpcUaClient> future) throws Exception {
5948
// synchronous connect
60-
client.connect().get();
49+
client.connect();
6150

6251
// create a subscription and a monitored item
63-
final UaSubscription subscription =
64-
client.getSubscriptionManager().createSubscription(200.0).get();
52+
final OpcUaSubscription subscription = new OpcUaSubscription(client, 200.0);
53+
subscription.create();
6554

6655
final ReadValueId readValueId =
6756
new ReadValueId(
6857
Identifiers.Server, AttributeId.EventNotifier.uid(), null, QualifiedName.NULL_VALUE);
6958

70-
// client handle must be unique per item
71-
final UInteger clientHandle = uint(clientHandles.getAndIncrement());
72-
7359
final EventFilter eventFilter =
7460
new EventFilter(
7561
new SimpleAttributeOperand[] {
@@ -96,30 +82,18 @@ public void run(OpcUaClient client, CompletableFuture<OpcUaClient> future) throw
9682
},
9783
new ContentFilter(null));
9884

99-
final MonitoringParameters parameters =
100-
new MonitoringParameters(
101-
clientHandle,
102-
0.0,
103-
ExtensionObject.encode(client.getStaticSerializationContext(), eventFilter),
104-
uint(10000),
105-
true);
106-
107-
final MonitoredItemCreateRequest request =
108-
new MonitoredItemCreateRequest(readValueId, MonitoringMode.Reporting, parameters);
109-
110-
final List<UaMonitoredItem> items =
111-
subscription
112-
.createMonitoredItems(TimestampsToReturn.Both, Collections.singletonList(request))
113-
.get();
85+
final OpcUaMonitoredItem monitoredItem =
86+
new OpcUaMonitoredItem(readValueId, MonitoringMode.Reporting);
87+
monitoredItem.setSamplingInterval(0.0);
88+
monitoredItem.setFilter(eventFilter);
89+
monitoredItem.setQueueSize(uint(10000));
90+
monitoredItem.setDiscardOldest(true);
91+
subscription.addMonitoredItem(monitoredItem);
92+
subscription.synchronizeMonitoredItems();
11493

11594
// do something with the value updates
116-
final UaMonitoredItem monitoredItem = items.get(0);
117-
118-
final AtomicInteger eventCount = new AtomicInteger(0);
119-
120-
monitoredItem.setEventConsumer(
95+
monitoredItem.setEventValueListener(
12196
(item, vs) -> {
122-
eventCount.incrementAndGet();
12397
System.out.println("Event Received from " + item.getReadValueId().getNodeId());
12498

12599
for (int i = 0; i < vs.length; i++) {

‎example/session/src/main/java/org/apache/iotdb/ConsensusSubscriptionWalFileAnalyzer.java‎

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,10 @@
2323

2424
import java.io.File;
2525
import java.io.IOException;
26-
import java.io.RandomAccessFile;
2726
import java.nio.ByteBuffer;
2827
import java.nio.channels.FileChannel;
2928
import java.nio.charset.StandardCharsets;
29+
import java.nio.file.StandardOpenOption;
3030
import java.util.Locale;
3131

3232
/**
@@ -79,8 +79,7 @@ private static void printUsage() {
7979
}
8080

8181
private static WalFileAnalysis analyze(final File walFile) throws IOException {
82-
try (RandomAccessFile raf = new RandomAccessFile(walFile, "r");
83-
FileChannel channel = raf.getChannel()) {
82+
try (FileChannel channel = FileChannel.open(walFile.toPath(), StandardOpenOption.READ)) {
8483
final long totalBytes = channel.size();
8584
final String version = detectVersion(channel, totalBytes);
8685
final int headMagicBytes = getHeadMagicBytes(version);

‎example/subscription/src/main/java/org/apache/iotdb/ConsensusSubscriptionSessionExample.java‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ private static void createConsensusTopic(final String topicName, final String pa
109109
session.open();
110110

111111
final Properties config = new Properties();
112-
config.put(TopicConstant.MODE_KEY, TopicConstant.MODE_CONSENSUS_VALUE);
112+
config.put(TopicConstant.MODE_KEY, TopicConstant.MODE_INCREMENTAL_VALUE);
113113
config.put(TopicConstant.FORMAT_KEY, TopicConstant.FORMAT_RECORD_HANDLER_VALUE);
114114
config.put(TopicConstant.PATH_KEY, path);
115115
config.put(TopicConstant.ORDER_MODE_KEY, TopicConstant.ORDER_MODE_PER_WRITER_VALUE);

‎example/subscription/src/main/java/org/apache/iotdb/ConsensusTableModelSubscriptionSessionExample.java‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ private static void createConsensusTopic(
107107
.password(PASSWORD)
108108
.build()) {
109109
final Properties config = new Properties();
110-
config.put(TopicConstant.MODE_KEY, TopicConstant.MODE_CONSENSUS_VALUE);
110+
config.put(TopicConstant.MODE_KEY, TopicConstant.MODE_INCREMENTAL_VALUE);
111111
config.put(TopicConstant.FORMAT_KEY, TopicConstant.FORMAT_RECORD_HANDLER_VALUE);
112112
config.put(TopicConstant.DATABASE_KEY, database);
113113
config.put(TopicConstant.TABLE_KEY, table);

0 commit comments

Comments
 (0)