1 // **********************************************************************
3 // Copyright (c) 2003-2011 ZeroC, Inc. All rights reserved.
5 // This copy of Ice is licensed to you under the terms described in the
6 // ICE_LICENSE file included in this distribution.
8 // **********************************************************************
12 class TransactionI
implements Transaction
19 throw new DatabaseException(_errorPrefix
+ "inactive transaction");
23 boolean committed
= false;
24 boolean deadlock
= false;
28 _connection
.closeAllIterators();
32 txnId
= Long
.toHexString((_txn
.getId() & 0x7FFFFFFF) + 0x80000000L
);
40 _connection
.communicator().getLogger().trace("Freeze.Transaction", _errorPrefix
+
41 "committed transaction " + txnId
);
44 catch(com
.sleepycat
.db
.DeadlockException e
)
50 _connection
.communicator().getLogger().trace("Freeze.Transaction", _errorPrefix
+
51 "failed to commit transaction " + txnId
+ ": " +
55 throw new DeadlockException(_errorPrefix
+ "DbTxn.commit: " + e
.getMessage(), this, e
);
57 catch(com
.sleepycat
.db
.DatabaseException e
)
61 _connection
.communicator().getLogger().trace("Freeze.Transaction", _errorPrefix
+
62 "failed to commit transaction " + txnId
+ ": " +
66 throw new DatabaseException(_errorPrefix
+ "DbTxn.commit: " + e
.getMessage(), e
);
70 _connection
.clearTransaction();
71 SharedDbEnv dbEnv
= _connection
.dbEnv();
78 postCompletion(committed
, deadlock
, dbEnv
);
87 throw new DatabaseException(_errorPrefix
+ "inactive transaction");
91 boolean deadlock
= false;
95 _connection
.closeAllIterators();
99 txnId
= Long
.toHexString((_txn
.getId() & 0x7FFFFFFF) + 0x80000000L
);
106 _connection
.communicator().getLogger().trace("Freeze.Transaction", _errorPrefix
+
107 "rolled back transaction " + txnId
);
110 catch(com
.sleepycat
.db
.DeadlockException e
)
114 _connection
.communicator().getLogger().trace("Freeze.Transaction", _errorPrefix
+
115 "failed to rollback transaction " + txnId
+ ": " +
121 throw new DeadlockException(_errorPrefix
+ "DbTxn.abort: " + e
.getMessage(), this, e
);
123 catch(com
.sleepycat
.db
.DatabaseException e
)
127 _connection
.communicator().getLogger().trace("Freeze.Transaction", _errorPrefix
+
128 "failed to rollback transaction " + txnId
+ ": " +
132 throw new DatabaseException(_errorPrefix
+ "DbTxn.abort: " + e
.getMessage(), e
);
136 _connection
.clearTransaction();
137 SharedDbEnv dbEnv
= _connection
.dbEnv();
144 postCompletion(false, deadlock
, dbEnv
);
154 TransactionI(ConnectionI connection
)
156 _connection
= connection
;
157 _txTrace
= connection
.txTrace();
158 _errorPrefix
= "DbEnv(\"" + _connection
.envName() + "\"): ";
162 _txn
= _connection
.dbEnv().getEnv().beginTransaction(null, null);
166 String txnId
= Long
.toHexString((_txn
.getId() & 0x7FFFFFFF) + 0x80000000L
);
168 _connection
.communicator().getLogger().trace("Freeze.Transaction", _errorPrefix
+
169 "started transaction " + txnId
);
172 catch(com
.sleepycat
.db
.DatabaseException e
)
176 _connection
.communicator().getLogger().trace("Freeze.Transaction", _errorPrefix
+
177 "failed to start transaction: " + e
.getMessage());
180 throw new DatabaseException(_errorPrefix
+ "txn_begin: " + e
.getMessage(), e
);
185 setPostCompletionCallback(PostCompletionCallback cb
)
187 _postCompletionCallback
= cb
;
193 _ownConnection
= true;
202 com
.sleepycat
.db
.Transaction
209 postCompletion(boolean committed
, boolean deadlock
, SharedDbEnv dbEnv
)
211 if(_postCompletionCallback
!= null)
215 _postCompletionCallback
.postCompletion(committed
, deadlock
, dbEnv
);
219 _postCompletionCallback
= null;
224 private ConnectionI _connection
;
225 private int _txTrace
;
226 private com
.sleepycat
.db
.Transaction _txn
;
228 private PostCompletionCallback _postCompletionCallback
;
230 private String _errorPrefix
;
231 private boolean _ownConnection
= false;