| | |
| | | @Override |
| | | public <T> T read(final ReadOperation<T> operation) throws Exception |
| | | { |
| | | final Transaction txn = beginTransaction(); |
| | | try |
| | | { |
| | | final T result = operation.run(newWriteableTransaction(txn)); |
| | | commit(txn); |
| | | return result; |
| | | return operation.run(newWriteableTransaction(null)); |
| | | } |
| | | catch (final StorageRuntimeException e) |
| | | { |
| | |
| | | } |
| | | throw e; |
| | | } |
| | | finally |
| | | { |
| | | abort(txn); |
| | | } |
| | | } |
| | | |
| | | @Override |
| | |
| | | { |
| | | if (envConfig.getTransactional()) |
| | | { |
| | | final Transaction txn = env.beginTransaction(null, new TransactionConfig()); |
| | | final Transaction txn = env.beginTransaction(null, null); |
| | | logger.trace("beginTransaction", "begin txnid=" + txn.getId()); |
| | | return txn; |
| | | } |
| | |
| | | |
| | | private void commit(final Transaction txn) |
| | | { |
| | | if (envConfig.getTransactional()) |
| | | if (txn != null) |
| | | { |
| | | txn.commit(); |
| | | logger.trace("commit txnid=%d", txn.getId()); |
| | |
| | | |
| | | private void abort(final Transaction txn) |
| | | { |
| | | if (envConfig.getTransactional()) |
| | | if (txn != null) |
| | | { |
| | | txn.abort(); |
| | | logger.trace("abort txnid=%d", txn.getId()); |