@Override public void delete(Long key) { logger.trace("delete.enter; key: {}", key); Long position = transactions.remove(key); if (position != null) { int pos = position.intValue(); bits.clear(pos2bit(pos)); buff.put(pos, (byte) TransactionState.commited.ordinal()); buff.putInt(0, bits.cardinality()); } logger.trace("delete.exit; deleted: {}; tx count: {}", position != null, bits.cardinality()); }
@Override public void deleteAll(Collection<Long> keys) { logger.trace("deleteAll.enter; keys: {}", keys); int cnt = 0; for (Long key: keys) { Long position = transactions.remove(key); if (position != null) { int pos = position.intValue(); bits.clear(pos2bit(pos)); buff.put(pos, (byte) TransactionState.commited.ordinal()); buff.putInt(0, bits.cardinality()); cnt++; } } logger.trace("deleteAll.exit; deleted: {}; tx count: {}", cnt, bits.cardinality()); }
private void writeTx(Transaction xtx) { buff.put((byte) xtx.getTxState().ordinal()); buff.putLong(xtx.getTxId()); buff.putLong(xtx.getStartedAt()); buff.putLong(xtx.getFinishedAt()); buff.put((byte) xtx.getTxIsolation().ordinal()); buff.putInt(xtx.getDocsCreated()); buff.putInt(xtx.getDocsUpdated()); buff.putInt(xtx.getDocsDeleted()); byte[] by = xtx.getStartedBy().getBytes(); byte[] by26 = new byte[byLen]; for (int i=0; i < by.length; i++) { by26[i] = by[i]; } buff.put(by26); //buff.force(); }
@Override public void write(ObjectDataOutput out, Transaction xTrans) throws IOException { out.writeLong(xTrans.getTxId()); out.writeLong(xTrans.getStartedAt()); out.writeLong(xTrans.getFinishedAt()); out.writeUTF(xTrans.getStartedBy()); out.writeInt(xTrans.getTxIsolation().ordinal()); out.writeInt(xTrans.getTxState().ordinal()); out.writeInt(xTrans.getDocsCreated()); out.writeInt(xTrans.getDocsUpdated()); out.writeInt(xTrans.getDocsDeleted()); }