[JAVA-4846] ConnectionId returned in heartbeats may be int64 Created: 18/Jan/23  Updated: 05/Jan/24  Resolved: 05/Jan/24

Status: Closed
Project: Java Driver
Component/s: Monitoring
Affects Version/s: None
Fix Version/s: 5.0.0

Type: Improvement Priority: Minor - P4
Reporter: PM Bot Assignee: Valentin Kavalenka
Resolution: Done Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Issue Links:
Documented
Issue split
split from DRIVERS-2503 ConnectionId returned in heartbeats m... Implementing
Epic Link: 5.0 Breaking Changes
Quarter: FY24Q4
Upstream Changes Summary:

DRIVERS-2503:
The connectionId in the hello (or legacy hello) response can be an int32, double, or int64. Many drivers assume an int32, which may result in connectionId truncation or connection failure. Drivers should ensure that the server's connectionId (and the client connectionId for consistency) is expressed as a numeric type capable of holding an int64.

NOTE: If the client and server connectionId fields are part of the driver's public API, you may have to add new int64 connectionId fields and deprecate the existing int32 fields. On the next major version bump, the deprecated int32 fields should be removed.

Backwards Compatibility: Major Change
Documentation Changes: Needed
Documentation Changes Summary:

We made breaking changes, and should mention them in What's new:

  • The constructor of `com.mongodb.connection.ConnectionId` now takes `long` and `Long` as the types of the second and third parameters respectively. This change breaks binary compatibility (the existing compiled code that call this constructor has to be recompiled; no source code changes are needed).
  • The method `com.mongodb.connection.ConnectionId.withServerValue` now takes `long` instead of `int`. The consequences of this change are the same as for the previous one.
  • The methods `com.mongodb.connection.ConnectionId.getLocalValue` and `getServerValue` now return `long` and `Long` respectively instead of `int` and `Integer`. This change breaks both binary and source compatibility (the source code that uses these methods has to be updated).

 Description   

This ticket was split from DRIVERS-2503, please see that ticket for a detailed description.



 Comments   
Comment by Githook User [ 05/Jan/24 ]

Author:

{'name': 'Valentin Kovalenko', 'email': 'valentin.kovalenko@mongodb.com', 'username': 'stIncMale'}

Message: Make `ConnectionId.serverValue`/`localValue` of the `Long`/`long` type (#1280)

JAVA-4846
Branch: master
https://github.com/mongodb/mongo-java-driver/commit/26df5512bd5ccae656e8639d7dc382ae1faaa518

Comment by Jeffrey Yemin [ 14/Aug/23 ]

The required API changes seem to be encapsulated in the com.mongodb.connection.ConnectionId class, primarily in the Integer getServerValue() method, which would be changed to return a Long instead.

Generated at Thu Feb 08 09:03:07 UTC 2024 using Jira 9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66.