List:NDB Connectors« Previous MessageNext Message »
From:Monty Taylor Date:November 14 2007 8:29pm
Subject:Rev 225: Merged changes from devel for Async problem in http://bazaar.launchpad.net/~ndb-connectors/ndb-connectors/telco-6.3
View as plain text  
At http://bazaar.launchpad.net/~ndb-connectors/ndb-connectors/telco-6.3

------------------------------------------------------------
revno: 225
revision-id: mtaylor@stripped
parent: mtaylor@stripped
parent: mtaylor@stripped
committer: Monty Taylor <mtaylor@stripped>
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: mtaylor@stripped
    parent: mtaylor@stripped
    committer: Monty Taylor <mtaylor@stripped>
    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: mtaylor@stripped
    parent: mtaylor@stripped
    committer: Monty Taylor <mtaylor@stripped>
    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);
 		}
 
 	}

Thread
Rev 225: Merged changes from devel for Async problem in http://bazaar.launchpad.net/~ndb-connectors/ndb-connectors/telco-6.3Monty Taylor14 Nov