DBZ-2138 Handle lsid as Binary for MongoDB 4.2
This commit is contained in:
parent
e8aecd7b45
commit
349fcdad07
@ -15,6 +15,7 @@
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
import org.bson.Document;
|
||||
import org.bson.types.Binary;
|
||||
|
||||
import com.mongodb.ServerAddress;
|
||||
import com.mongodb.client.MongoClient;
|
||||
@ -230,7 +231,10 @@ public static String getOplogSessionTransactionId(Document oplogEvent) {
|
||||
if (!oplogEvent.containsKey("txnNumber")) {
|
||||
return null;
|
||||
}
|
||||
final String lsid = oplogEvent.get("lsid", Document.class).get("id", UUID.class).toString();
|
||||
final Document lsidDoc = oplogEvent.get("lsid", Document.class);
|
||||
final Object id = lsidDoc.get("id");
|
||||
// MongoDB 4.2 returns Binary instead of UUID
|
||||
final String lsid = (id instanceof Binary) ? UUID.nameUUIDFromBytes(((Binary) id).getData()).toString() : ((UUID) id).toString();
|
||||
final Long txnNumber = oplogEvent.getLong("txnNumber");
|
||||
return lsid + ":" + txnNumber;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user