1 message in com.mysql.lists.ndb-connectorsRev 225: Merged changes from devel fo...| From | Sent On | Attachments |
|---|---|---|
| Monty Taylor | 14 Nov 2007 12:28 |
| Subject: | Rev 225: Merged changes from devel for Async problem in http://bazaar.launchpad.net/~ndb-connectors/ndb-connectors/telco-6.3![]() |
|---|---|
| From: | Monty Taylor (mtay...@mysql.com) |
| Date: | 11/14/2007 12:28:43 PM |
| List: | com.mysql.lists.ndb-connectors |
At http://bazaar.launchpad.net/~ndb-connectors/ndb-connectors/telco-6.3
------------------------------------------------------------
revno: 225
revision-id: mtay...@mysql.com-20071114202835-qnjrc041r5mvkgqk
parent: mtay...@mysql.com-20071114182601-rx7dagfrsxgvf9m0
parent: mtay...@mysql.com-20071114201939-aj37y295hq05xcvk
committer: Monty Taylor <mtay...@mysql.com>
branch nick: telco-6.3
timestamp: Wed 2007-11-14 12:28:35 -0800
message:
Merged changes from devel for Async problem
added:
java/testsuite/ndbj/OutOfConnectionProblemTest.java
outofconnectionprobl-20071114201416-ycjx0i6uz5umawy0-1
modified:
java/com/mysql/cluster/ndbj/BaseCallback.java
indbcallable.java-20070913212805-mw0t23qijtyjad85-1
java/com/mysql/cluster/ndbj/examples/TestAsync.java
testasync.java-20070703002120-jsnz1ul38pp1h3w3-1
java/com/mysql/cluster/ndbj/examples/TestBaseCallback.java
testbasecallback.jav-20070703002120-jsnz1ul38pp1h3w3-2
java/testsuite/TestCallback.java
testcallback.java-20071025000621-gt2wugdvy68mjae6-1
java/testsuite/ndbj/ImmediatePollTimeoutTest.java
immediatepolltimeout-20071030180642-3bfrv97t3q8mc2m6-1
java/testsuite/ndbj/MultipleAsyncTest.java
multipleasynctest.ja-20071025000638-1e8odqpjivvkiwt4-1
java/testsuite/ndbj/QuickAsyncTest.java
quickasynctest.java-20071024021835-88iqvmlfhmy1basb-1
java/testsuite/ndbj/QuickBFTest.java
quickbftest.java-20071101143506-knxv9uo02grm6jx8-1
------------------------------------------------------------
revno: 192.1.25.1.34
revision-id: mtay...@mysql.com-20071114201939-aj37y295hq05xcvk
parent: mtay...@mysql.com-20071114201308-hurnhivqmglc83bv
committer: Monty Taylor <mtay...@mysql.com>
branch nick: devel
timestamp: Wed 2007-11-14 12:19:39 -0800
message:
Added OutofConnectionProblemTest to testsuite.
added:
java/testsuite/ndbj/OutOfConnectionProblemTest.java
outofconnectionprobl-20071114201416-ycjx0i6uz5umawy0-1
------------------------------------------------------------
revno: 192.1.25.1.33
revision-id: mtay...@mysql.com-20071114201308-hurnhivqmglc83bv
parent: mtay...@mysql.com-20071114180716-4mdp0qtc1njxc37s
committer: Monty Taylor <mtay...@mysql.com>
branch nick: devel
timestamp: Wed 2007-11-14 12:13:08 -0800
message:
Changed BaseCallback to store the NdbTransaction object.
Added getNdbError to BaseCallback.
modified:
java/com/mysql/cluster/ndbj/BaseCallback.java
indbcallable.java-20070913212805-mw0t23qijtyjad85-1
java/com/mysql/cluster/ndbj/examples/TestAsync.java
testasync.java-20070703002120-jsnz1ul38pp1h3w3-1
java/com/mysql/cluster/ndbj/examples/TestBaseCallback.java
testbasecallback.jav-20070703002120-jsnz1ul38pp1h3w3-2
java/testsuite/TestCallback.java
testcallback.java-20071025000621-gt2wugdvy68mjae6-1
java/testsuite/ndbj/ImmediatePollTimeoutTest.java
immediatepolltimeout-20071030180642-3bfrv97t3q8mc2m6-1
java/testsuite/ndbj/MultipleAsyncTest.java
multipleasynctest.ja-20071025000638-1e8odqpjivvkiwt4-1
java/testsuite/ndbj/QuickAsyncTest.java
quickasynctest.java-20071024021835-88iqvmlfhmy1basb-1
java/testsuite/ndbj/QuickBFTest.java
quickbftest.java-20071101143506-knxv9uo02grm6jx8-1
=== added file 'java/testsuite/ndbj/OutOfConnectionProblemTest.java'
--- a/java/testsuite/ndbj/OutOfConnectionProblemTest.java 1970-01-01 00:00:00
+0000
+++ b/java/testsuite/ndbj/OutOfConnectionProblemTest.java 2007-11-14 20:19:39
+0000
@@ -0,0 +1,183 @@
+package testsuite.ndbj;
+
+import java.util.*;
+import java.sql.Timestamp;
+import testsuite.BaseNdbjTestCase;
+import com.mysql.cluster.ndbj.*;
+
+public class OutOfConnectionProblemTest extends BaseNdbjTestCase {
+
+ static boolean alreadySetUp = false;
+
+
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
+ // GENERAL STUFF
+
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+ static final int NUMBER_OF_TEST_ITERATIONS = 10000;
+
+ static final int NUMBER_OF_ELEMENT_INSERTIONS = 25;
+
+ static final int NUM_TRANSACTIONS = 5;
+ static final int TRANSACTIONS_TIMEOUT = 1;
+ static final int FORCE_SEND = 1;
+
+
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
+ // TABLE METADATA
+
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+ static final String PROBTABLE = "OutOfConnectionProblemTable";
+
+ static int PROBTABLE_FIELD1;
+
+
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
+ // OTHER
+
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+ static int myTransactionCount = 0;
+ static int myTotalTransactionCount = 0;
+
+
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
+ // INITIALISATION CODE
+
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+ public static void main(String[] args) {
+ junit.textui.TestRunner.run(OutOfConnectionProblemTest.class);
+ }
+
+ public OutOfConnectionProblemTest(String arg0) {
+ super(arg0);
+ }
+
+ public void setUp() throws Exception {
+ super.setUp();
+
+ if (!alreadySetUp) {
+ // Create required tables
+
+ createTable(PROBTABLE, "(field1 SMALLINT UNSIGNED NOT NULL, PRIMARY
KEY(field1)) ENGINE=ndb PARTITION BY KEY (field1);");
+
+ NdbDictionary dictionary = ndb.getDictionary();
+
+ NdbTable probTable = dictionary.getTable(PROBTABLE);
+ PROBTABLE_FIELD1 = probTable.getColumn("field1").getColumnNo();
+ }
+ }
+
+ public void tearDown() throws Exception {
+ super.tearDown();
+ }
+
+
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
+ // TEST CODE
+
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+ public void testOperation() {
+
+ try {
+ long startTime = System.currentTimeMillis();
+
+ for (int iteration = 0;
+ iteration < NUMBER_OF_TEST_ITERATIONS;
+ iteration++) {
+ generateRequestTxs(iteration);
+
+ sendPollNdb(TRANSACTIONS_TIMEOUT, NUM_TRANSACTIONS, FORCE_SEND);
+ }
+
+ System.out.println("Performing cooldown");
+
+ pollNdb(100000, myTransactionCount);
+
+ long endTime = System.currentTimeMillis();
+ long elapsedTime = endTime - startTime;
+
+ System.out.println("Test completed with no exceptions and took " +
elapsedTime / 1000 + " seconds");
+ }
+ catch (NdbApiException e) {
+ System.out.println("Caught NdbApiException in Insert:\t" + e.getMessage());
+ e.printStackTrace();
+ assertFalse(true);
+ }
+ finally {
+ System.out.println("End of test.");
+ }
+ }
+
+ public void generateRequestTxs(int theLastBatch) throws NdbApiException {
+
+ boolean success = false;
+
+ NdbOperation orderOp;
+ BaseCallback callback;
+
+ try {
+
+ for (int elementCount = 1;
+ elementCount < (NUMBER_OF_ELEMENT_INSERTIONS) + 1;
+ elementCount++) {
+
+ int id = (NUMBER_OF_ELEMENT_INSERTIONS * theLastBatch) + elementCount;
+
+ trans = startCountedTransaction();
+
+ orderOp = trans.getNdbOperation(PROBTABLE);
+
+ orderOp.insertTuple();
+
+ orderOp.equalInt(PROBTABLE_FIELD1, id);
+
+ callback = new CountingCallback(id, ndb, orderOp.resultData(), trans);
+
+ trans.executeAsynchPrepare(ExecType.Commit,
+ callback,
+ AbortOption.AbortOnError);
+ }
+
+
+ success = true;
+ }
+ finally {
+System.out.println("Started " + myTotalTransactionCount + " txs in total " +
(success ? "(no errors)" : "(errors, aborting)"));
+ }
+ }
+
+ private NdbTransaction startCountedTransaction() throws NdbApiException {
+ myTransactionCount++;
+ myTotalTransactionCount++;
+
+ return ndb.startTransaction();
+ }
+
+ private int sendPollNdb(int aMillisecondNumber, int minNoOfEventsToWakeup, int
forceSend) throws NdbApiException {
+ ndb.sendPreparedTransactions(forceSend);
+
+ return pollNdb(aMillisecondNumber, minNoOfEventsToWakeup);
+ }
+
+ private int pollNdb(int aMillisecondNumber, int minNoOfEventsToWakeup) throws
NdbApiException {
+ int numberOfCallbacks = ndb.pollNdb(aMillisecondNumber,
minNoOfEventsToWakeup);
+
+ System.out.println("Poll produced " + numberOfCallbacks + " callbacks (" +
myTransactionCount +
+ " txs outstanding) [Total " + myTotalTransactionCount +
"]");
+
+ return numberOfCallbacks;
+ }
+
+ class CountingCallback extends BaseCallback {
+
+ public CountingCallback(int theCallbackNum, Ndb theNdb, NdbResultSet
theResults, NdbTransaction trans) {
+ super(trans);
+ }
+
+ public void callback(int theResult) {
+ myTransactionCount--;
+ //System.out.print("Callback (" + theTrans + "): ");
+
+ //System.out.print("Transaction was " + (theTrans.isClosed() ? "closed" :
"open") + " (before close()) " );
+ theTrans.close();
+ //System.out.println("and is now " + (theTrans.isClosed() ? "closed" :
"open") );
+ }
+
+ }
+
+}
=== modified file 'java/com/mysql/cluster/ndbj/BaseCallback.java' --- a/java/com/mysql/cluster/ndbj/BaseCallback.java 2007-10-31 16:49:20 +0000 +++ b/java/com/mysql/cluster/ndbj/BaseCallback.java 2007-11-14 20:28:35 +0000 @@ -7,24 +7,36 @@ private long create_time; private long start_time; private long end_time; + protected NdbTransaction theTrans = null;
- public BaseCallback() { + public BaseCallback(NdbTransaction trans) { create_time = 0; start_time = 0; end_time = 0; + theTrans=trans; }
protected final void jni_call_callback(int result, long transPtr, long
create_time) {
this.create_time = create_time;
this.start_time = this.getMicroTime();
- NdbTransactionImpl theTrans = new NdbTransactionImpl(transPtr,false);
- this.callback(result,theTrans);
- theTrans.close();
+
+ if (((NdbTransactionImpl)theTrans).getCPtr((NdbTransactionImpl)theTrans) ==
transPtr) {
+ this.callback(result);//),new NdbTransactionImpl(transPtr,false));
+ } else {
+ // Something is horrible wrong! The transaction we were passed is not the
same as the
+ // transaction we are storing. TODO: How do we deal with this?
+ this.callback(result);
+ }
this.end_time = this.getMicroTime();
};
-
- public void callback(int result, NdbTransaction myTrans) {}
-
+
+ public void callback(int result) {}
+
+ //public void callback(int result, NdbTransaction myTrans) {}
+
+ public final NdbError getNdbError() {
+ return ((NdbTransactionImpl)theTrans).getNdbError();
+ }
public final long getMicroTime() {
return ndbjJNI.getMicroTime();
}
=== modified file 'java/com/mysql/cluster/ndbj/examples/TestAsync.java'
--- a/java/com/mysql/cluster/ndbj/examples/TestAsync.java 2007-10-30 08:55:54
+0000
+++ b/java/com/mysql/cluster/ndbj/examples/TestAsync.java 2007-11-14 20:13:08
+0000
@@ -236,7 +236,7 @@
myOper.getValue("ATTR2");
rs = myOper.resultData(); - TestBaseCallback cb = new TestBaseCallback(myNdb,rs); + TestBaseCallback cb = new TestBaseCallback(myNdb,myTrans,rs);
myTrans.executeAsynchPrepare(ExecType.Commit, cb,
AbortOption.AbortOnError);
cbs.add(cb);
=== modified file 'java/com/mysql/cluster/ndbj/examples/TestBaseCallback.java'
--- a/java/com/mysql/cluster/ndbj/examples/TestBaseCallback.java 2007-09-14
10:08:14 +0000
+++ b/java/com/mysql/cluster/ndbj/examples/TestBaseCallback.java 2007-11-14
20:13:08 +0000
@@ -10,12 +10,13 @@
NdbResultSet myRs;
Ndb myNdb;
- public TestBaseCallback(Ndb theNdb, NdbResultSet theRs) {
- this.myRs=theRs;
- this.myNdb=theNdb;
+ public TestBaseCallback(Ndb theNdb, NdbTransaction theTrans, NdbResultSet
theRs) {
+ super(theTrans);
+ this.myRs=theRs;
+ this.myNdb=theNdb;
}
- public void callback(int result, NdbTransaction myTrans) {
+ public void callback(int result) {
//System.out.println("result " + result + " value: " +
this.myRs.getInt("ATTR));
try {
System.out.println("value " + this.myRs.getInt("ATTR2"));
=== modified file 'java/testsuite/TestCallback.java' --- a/java/testsuite/TestCallback.java 2007-10-25 00:10:47 +0000 +++ b/java/testsuite/TestCallback.java 2007-11-14 20:13:08 +0000 @@ -13,30 +13,26 @@ NdbResultSet myResults; String myTablename = "";
- public TestCallback(String tablename, int theCallbackNum, Ndb theNdb,
NdbResultSet theResults) {
+ public TestCallback(String tablename, int theCallbackNum, Ndb theNdb,
NdbTransaction theTrans, NdbResultSet theResults) {
+ super(theTrans);
myCallbackNum = theCallbackNum;
myNdb = theNdb;
myResults = theResults;
myTablename = tablename;
}
- public TestCallback(int theCallbackNum, Ndb theNdb, NdbResultSet theResults)
{
+ public TestCallback(int theCallbackNum, Ndb theNdb, NdbTransaction theTrans,
NdbResultSet theResults) {
+ super(theTrans);
myCallbackNum = theCallbackNum;
myNdb = theNdb;
myResults = theResults;
}
- public void callback(int result, NdbTransaction myTrans) { + public void callback(int result) { System.out.println("Finished " + myTablename + " " + myCallbackNum); junit.framework.Assert.assertTrue(true); - myTrans.close(); + theTrans.close(); }
- public void callback(int res, NdbTransactionImpl trans) { // TEMPORARY
REPLACEMENT FOR ABOVE
- System.out.println("Finished " + myTablename + " " + myCallbackNum);
- junit.framework.Assert.assertTrue(true);
-
- trans.close();
- }
}
=== modified file 'java/testsuite/ndbj/ImmediatePollTimeoutTest.java'
--- a/java/testsuite/ndbj/ImmediatePollTimeoutTest.java 2007-10-30 18:06:46
+0000
+++ b/java/testsuite/ndbj/ImmediatePollTimeoutTest.java 2007-11-14 20:13:08
+0000
@@ -97,7 +97,7 @@
orderOp.equalInt("ATTR1", id);
orderOp.setInt("ATTR2", id);
- callback = new MyCallback(hash, id, ndb, orderOp.resultData()); + callback = new MyCallback(hash, id, ndb, trans, orderOp.resultData()); hash.put(callback.hashCode(), callback);
trans.executeAsynchPrepare(ExecType.Commit, @@ -150,18 +150,19 @@ NdbResultSet myResults; HashMap<Integer, BaseCallback> myMap;
- public HashCallback(HashMap<Integer, BaseCallback> theMap, int
theCallbackNum, Ndb theNdb, NdbResultSet theResults) {
- myMap = theMap;
- myCallbackNum = theCallbackNum;
- myNdb = theNdb;
- myResults = theResults;
+ public HashCallback(HashMap<Integer, BaseCallback> theMap, int
theCallbackNum, Ndb theNdb, NdbTransaction theTrans, NdbResultSet theResults) {
+ super(theTrans);
+ myMap = theMap;
+ myCallbackNum = theCallbackNum;
+ myNdb = theNdb;
+ myResults = theResults;
}
- public void callback(int res, NdbTransactionImpl trans) { + public void callback(int res) {
if (res!=0)
System.out.println("HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHASSSSSSSSSSSSSSSSSSSSHHH");
- trans.close(); + theTrans.close(); myMap.remove(this.hashCode());
ourCallbackCount++; @@ -171,8 +172,8 @@
class MyCallback extends HashCallback {
- public MyCallback(HashMap<Integer, BaseCallback> theMap,int
theCallbackNum, Ndb theNdb, NdbResultSet theResults) {
- super(theMap, theCallbackNum, theNdb, theResults);
+ public MyCallback(HashMap<Integer, BaseCallback> theMap,int
theCallbackNum, Ndb theNdb, NdbTransaction theTrans, NdbResultSet theResults) {
+ super(theMap, theCallbackNum, theNdb, theTrans, theResults);
}
}
=== modified file 'java/testsuite/ndbj/MultipleAsyncTest.java' --- a/java/testsuite/ndbj/MultipleAsyncTest.java 2007-10-25 00:10:47 +0000 +++ b/java/testsuite/ndbj/MultipleAsyncTest.java 2007-11-14 20:13:08 +0000 @@ -117,7 +117,7 @@ firstOp.setInt("ATTR2", id);
if (!USE_SYNCHRONOUS) {
- callback = new TestCallback(tablename1, id, ndb, firstOp.resultData());
+ callback = new TestCallback(tablename1, id, ndb, trans,
firstOp.resultData());
trans.executeAsynchPrepare(ExecType.Commit, callback, @@ -134,7 +134,7 @@ secondOp.setInt("ATTR2", id);
if (!USE_SYNCHRONOUS) {
- callback = new TestCallback(tablename2, id, ndb, firstOp.resultData());
+ callback = new TestCallback(tablename2, id, ndb, trans,
firstOp.resultData());
trans.executeAsynchPrepare(ExecType.Commit, callback, @@ -152,7 +152,7 @@ thirdOp.setInt("ATTR2", id);
if (!USE_SYNCHRONOUS) {
- callback = new TestCallback(tablename3, id, ndb, firstOp.resultData());
+ callback = new TestCallback(tablename3, id, ndb, trans,
firstOp.resultData());
trans.executeAsynchPrepare(ExecType.Commit, callback,
=== modified file 'java/testsuite/ndbj/QuickAsyncTest.java' --- a/java/testsuite/ndbj/QuickAsyncTest.java 2007-10-25 00:10:47 +0000 +++ b/java/testsuite/ndbj/QuickAsyncTest.java 2007-11-14 20:13:08 +0000 @@ -85,7 +85,7 @@
orderOp1.setInt("ATTR2", 1);
- BaseCallback callback = new TestCallback(1, ndb, orderOp1.resultData());
+ BaseCallback callback = new TestCallback(1, ndb, trans,
orderOp1.resultData());
trans.executeAsynchPrepare(ExecType.Commit, callback, @@ -121,7 +121,7 @@ orderOp1.setInt("ATTR2", 1);
- BaseCallback callback = new TestCallback(1, ndb, orderOp1.resultData());
+ BaseCallback callback = new TestCallback(1, ndb, trans,
orderOp1.resultData());
trans.executeAsynchPrepare(ExecType.Commit, callback, @@ -136,7 +136,7 @@
orderOp2.setInt("ATTR2", 1);
- TestCallback callback2 = new TestCallback(2, ndb, orderOp2.resultData());
+ TestCallback callback2 = new TestCallback(2, ndb, trans,
orderOp2.resultData());
trans.executeAsynchPrepare(ExecType.Commit, callback2, @@ -186,7 +186,7 @@
if (!USE_SYNCHRONOUS) {
- callback = new TestCallback(tablename, id, ndb, orderOp.resultData());
+ callback = new TestCallback(tablename, id, ndb, trans,
orderOp.resultData());
trans.executeAsynchPrepare(ExecType.Commit, callback,
=== modified file 'java/testsuite/ndbj/QuickBFTest.java' --- a/java/testsuite/ndbj/QuickBFTest.java 2007-11-01 14:35:09 +0000 +++ b/java/testsuite/ndbj/QuickBFTest.java 2007-11-14 20:13:08 +0000 @@ -263,7 +263,7 @@ orderOp.setInt(ORDER_PRICE, id);
if (!USE_SYNCHRONOUS) { - callback = new OrderCallback(id, ndb, orderOp.resultData()); + callback = new OrderCallback(id, ndb, trans, orderOp.resultData());
trans.executeAsynchPrepare(ExecType.Commit, callback, @@ -309,7 +309,7 @@ executionOp.setInt(EXECUTION_ORDERID, id);
if (!USE_SYNCHRONOUS) {
- callback = new ExecutionCallback(id, ndb, executionOp.resultData());
+ callback = new ExecutionCallback(id, ndb, trans,
executionOp.resultData());
trans.executeAsynchPrepare(ExecType.Commit, callback, @@ -332,7 +332,7 @@ tradeOp.setInt(TRADE_QUANTITY, id);
if (!USE_SYNCHRONOUS) { - callback = new TradeCallback(id, ndb, executionOp.resultData()); + callback = new TradeCallback(id, ndb, trans, executionOp.resultData());
trans.executeAsynchPrepare(ExecType.Commit, callback, @@ -356,7 +356,7 @@ settlementOp.setInt(SETTLEMENT_VALUE, id);
if (!USE_SYNCHRONOUS) {
- callback = new SettlementCallback(id, ndb, executionOp.resultData());
+ callback = new SettlementCallback(id, ndb, trans,
executionOp.resultData());
trans.executeAsynchPrepare(ExecType.Commit, callback, @@ -417,7 +417,8 @@ Ndb myNdb; NdbResultSet myResults;
- public CountingCallback(int theCallbackNum, Ndb theNdb, NdbResultSet
theResults) {
+ public CountingCallback(int theCallbackNum, Ndb theNdb, NdbTransaction
theTrans, NdbResultSet theResults) {
+ super(theTrans);
myTransactionCount++;
myTotalTransactionCount++;
@@ -454,32 +455,32 @@
class OrderCallback extends CountingCallback {
- public OrderCallback(int theCallbackNum, Ndb theNdb, NdbResultSet theResults)
{
- super(theCallbackNum, theNdb, theResults);
+ public OrderCallback(int theCallbackNum, Ndb theNdb, NdbTransaction theTrans,
NdbResultSet theResults) {
+ super(theCallbackNum, theNdb, theTrans, theResults);
}
}
class ExecutionCallback extends CountingCallback {
- public ExecutionCallback(int theCallbackNum, Ndb theNdb, NdbResultSet
theResults) {
- super(theCallbackNum, theNdb, theResults);
+ public ExecutionCallback(int theCallbackNum, Ndb theNdb, NdbTransaction
theTrans, NdbResultSet theResults) {
+ super(theCallbackNum, theNdb, theTrans, theResults);
}
}
class TradeCallback extends CountingCallback {
- public TradeCallback(int theCallbackNum, Ndb theNdb, NdbResultSet theResults)
{
- super(theCallbackNum, theNdb, theResults);
+ public TradeCallback(int theCallbackNum, Ndb theNdb, NdbTransaction theTrans,
NdbResultSet theResults) {
+ super(theCallbackNum, theNdb, theTrans, theResults);
}
}
class SettlementCallback extends CountingCallback {
- public SettlementCallback(int theCallbackNum, Ndb theNdb, NdbResultSet
theResults) {
- super(theCallbackNum, theNdb, theResults);
+ public SettlementCallback(int theCallbackNum, Ndb theNdb, NdbTransaction
theTrans, NdbResultSet theResults) {
+ super(theCallbackNum, theNdb, theTrans, theResults);
}
}




