@SuppressWarnings("deprecation")
@Override
public long commitTransaction(byte[] startId) throws IOException {
Integer lockId = region.getLock(null, startId, true);
try {
long commitId = tidClient.getId();
long startIdLong = DominoConst.getTidFromTMetaKey(startId);
Get get = new Get(startId);
Result r = region.get(get, lockId);
if (DominoConst.TRX_ACTIVE != DominoConst.transactionStatus(r)) {
return DominoConst.ERR_TRX_ABORTED;
}
Put put = new Put(startId);
put.add(DominoConst.TRANSACTION_META_FAMILY,
DominoConst.TRANSACTION_STATUS, startIdLong,
DominoConst.TRX_COMMITTED_B);
put.add(DominoConst.TRANSACTION_META_FAMILY,
DominoConst.TRANSACTION_COMMIT_ID, startIdLong,
Bytes.toBytes(commitId));
region.put(put, lockId, true);
return commitId;
}
finally {
region.releaseRowLock(lockId);
}
}