Skip to content

Commit a8dc4fb

Browse files
committed
Add lock for updates.
JAVA-5870
1 parent f296d0c commit a8dc4fb

File tree

1 file changed

+7
-1
lines changed

1 file changed

+7
-1
lines changed

driver-core/src/main/com/mongodb/internal/connection/ClientMetadata.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,9 @@
2020
import com.mongodb.lang.Nullable;
2121
import org.bson.BsonDocument;
2222

23+
import java.util.concurrent.locks.ReentrantLock;
24+
25+
import static com.mongodb.internal.Locks.withLock;
2326
import static com.mongodb.internal.connection.ClientMetadataHelper.createClientMetadataDocument;
2427
import static com.mongodb.internal.connection.ClientMetadataHelper.updateClientMedataDocument;
2528

@@ -29,6 +32,7 @@
2932
* <p>This class is not part of the public API and may be removed or changed at any time</p>
3033
*/
3134
public class ClientMetadata {
35+
private final ReentrantLock updateLock = new ReentrantLock();
3236
private volatile BsonDocument clientMetadataBsonDocument;
3337

3438
public ClientMetadata(@Nullable final String applicationName, final MongoDriverInformation mongoDriverInformation) {
@@ -43,7 +47,9 @@ public BsonDocument getBsonDocument() {
4347
}
4448

4549
public void append(final MongoDriverInformation mongoDriverInformation) {
46-
this.clientMetadataBsonDocument = updateClientMedataDocument(clientMetadataBsonDocument, mongoDriverInformation);
50+
withLock(updateLock, () ->
51+
this.clientMetadataBsonDocument = updateClientMedataDocument(clientMetadataBsonDocument, mongoDriverInformation)
52+
);
4753
}
4854
}
4955

0 commit comments

Comments
 (0)