Skip to content

Upgrade Eclipse Milo to 1.1.6 - #18431

Merged
jt2594838 merged 4 commits into
apache:masterfrom
Caideyipi:fix/opcua-milo-1.1.6
Aug 11, 2026
Merged

Upgrade Eclipse Milo to 1.1.6#18431
jt2594838 merged 4 commits into
apache:masterfrom
Caideyipi:fix/opcua-milo-1.1.6

Conversation

@Caideyipi

@Caideyipi Caideyipi commented Aug 10, 2026

Copy link
Copy Markdown
Collaborator

Description

Upgrade Eclipse Milo

  • Upgrade Eclipse Milo from 0.6.14 to 1.1.6 and migrate to the Milo 1.x artifact coordinates.
  • Migrate the OPC UA server, client, subscription, event, example, and integration-test code to the Milo 1.x APIs.
  • Update dependencies.json so packaged dependency metadata matches the resolved artifacts.

Security hardening

  • Include the upstream UASC chunk-buffer release fix for CVE-2026-63252.
  • Explicitly use SessionSecurityDiagnosticsAccessMode.RESTRICTED for CVE-2026-63248.
  • Publish the anonymous user token policy only when anonymous access is enabled.
  • Validate X.509 user identity certificates against the server trust list instead of accepting every certificate.

TCP None compatibility and transport behavior

  • Preserve the opc.tcp URL/path, UA TCP UASC UA Binary transport profile, SecurityPolicy.None, and MessageSecurityMode.None behavior.
  • A Milo 0.6.14 client connected to the 1.1.6 server and successfully read ServerStatus.State in both anonymous and username/password sessions.
  • The new OpcUaTcpNoneCompatibilityTest performs the same loopback handshake, session, endpoint-selection, and Read checks with the 1.1.6 client.
  • Milo 1.1.6 provides the OPC TCP server transport but no HTTPS server transport. The server therefore publishes only opc.tcp endpoints. The existing HTTPS port option remains accepted for configuration compatibility, conflict validation, and shared-server identity.

Password-change reconstruction

  • Keep the Milo application-group certificate store in memory because OpcUaKeyStoreLoader already persists the application key pair in iotdb-server.pfx.
  • Avoid creating a second password-protected iotdb-milo-application.pfx that becomes stale when a pipe is dropped and the server is reconstructed with a different password.
  • Add a regression test that builds the server with the original password and then rebuilds it in the same security directory with a changed password.

Verification

  • Full reactor test compilation passed for both the default and Chinese locales (50 modules each) for the Milo migration.
  • Integration-test reactor test compilation passed (37 modules and 856 test sources).
  • Focused existing OPC UA tests passed: 13/13.
  • New TCP None loopback compatibility test passed: 1/1.
  • OpcUaServerBuilderTest passed on Windows: 7/7, including password-change reconstruction.
  • Manual Windows lifecycle test passed:
    • Started and stopped the server with the original password.
    • Rebuilt, started, and stopped the server on the same port and security directory with a changed password.
    • The rebuilt iotdb-server.pfx loaded with the new password, while the old password was rejected.
    • No duplicate iotdb-milo-application.pfx was created.
    • A third builder using a conflicting password produced the expected masked-password conflict error.
  • DataNode and OPC UA example dependency trees resolve only Milo 1.1.6 artifacts with the new coordinates.
  • Repository scans found no remaining old Milo coordinates or API imports.
  • git diff --check passed.

This PR has:

  • been self-reviewed.
  • updated dependency version information.
  • added or updated unit tests for the changed behavior.
  • updated the OPC UA integration test for the Milo 1.x API.

Key changed classes
  • OpcUaServerBuilder
  • OpcUaNameSpace
  • IoTDBOpcUaClient and ClientRunner
  • OpcUaTcpNoneCompatibilityTest
  • OPC UA example client classes
  • IoTDBPipeOPCUAIT

@jt2594838
jt2594838 merged commit 02f43e7 into apache:master Aug 11, 2026
41 checks passed
@jt2594838
jt2594838 deleted the fix/opcua-milo-1.1.6 branch August 11, 2026 08:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants