[teiid-commits] teiid SVN: r818 - in trunk/engine/src: test/java/org/teiid/dqp/internal/process and 1 other directory.

teiid-commits at lists.jboss.org teiid-commits at lists.jboss.org
Tue Apr 21 16:37:27 EDT 2009


Author: shawkins
Date: 2009-04-21 16:37:26 -0400 (Tue, 21 Apr 2009)
New Revision: 818

Modified:
   trunk/engine/src/main/java/org/teiid/dqp/internal/process/CachedRequestWorkItem.java
   trunk/engine/src/main/java/org/teiid/dqp/internal/process/DQPCore.java
   trunk/engine/src/main/java/org/teiid/dqp/internal/process/RequestWorkItem.java
   trunk/engine/src/test/java/org/teiid/dqp/internal/process/TestDQPCoreRequestHandling.java
   trunk/engine/src/test/java/org/teiid/dqp/internal/process/TestDataTierManager.java
   trunk/engine/src/test/java/org/teiid/dqp/internal/process/TestMetaDataProcessor.java
Log:
TEIID-524 fix of tracking regression

Modified: trunk/engine/src/main/java/org/teiid/dqp/internal/process/CachedRequestWorkItem.java
===================================================================
--- trunk/engine/src/main/java/org/teiid/dqp/internal/process/CachedRequestWorkItem.java	2009-04-21 19:43:28 UTC (rev 817)
+++ trunk/engine/src/main/java/org/teiid/dqp/internal/process/CachedRequestWorkItem.java	2009-04-21 20:37:26 UTC (rev 818)
@@ -93,7 +93,7 @@
 	@Override
 	protected void attemptClose() {
 		this.isClosed = true;
-		dqpCore.logMMCommand(requestMsg, false, false, -1);
+		dqpCore.logMMCommand(this, false, false, -1);
 		this.dqpCore.removeRequest(this);
 	}
 	

Modified: trunk/engine/src/main/java/org/teiid/dqp/internal/process/DQPCore.java
===================================================================
--- trunk/engine/src/main/java/org/teiid/dqp/internal/process/DQPCore.java	2009-04-21 19:43:28 UTC (rev 817)
+++ trunk/engine/src/main/java/org/teiid/dqp/internal/process/DQPCore.java	2009-04-21 20:37:26 UTC (rev 818)
@@ -37,6 +37,7 @@
 import javax.transaction.SystemException;
 import javax.transaction.xa.Xid;
 
+import org.teiid.connector.xa.api.TransactionContext;
 import org.teiid.dqp.internal.cache.CacheID;
 import org.teiid.dqp.internal.cache.DQPContextCache;
 import org.teiid.dqp.internal.cache.ResultSetCache;
@@ -228,8 +229,6 @@
 
 	public ResultsFuture<ResultsMessage> executeRequest(long reqID,
 			RequestMessage requestMsg) {
-    	logMMCommand(requestMsg, true, false, 0); //TODO: there is no transaction at this point 
-
     	DQPWorkContext workContext = DQPWorkContext.getWorkContext();
 		RequestID requestID = workContext.getRequestID(reqID);
 		requestMsg.markProcessingStart();
@@ -260,6 +259,7 @@
             workItem = new RequestWorkItem(this, requestMsg, request, resultsFuture.getResultsReceiver(), requestID, workContext);
         }
         
+    	logMMCommand(workItem, true, false, 0); //TODO: there is no transaction at this point 
         addRequest(requestID, workItem);
         
         this.addWork(workItem);      
@@ -452,7 +452,7 @@
         	markCancelled = workItem.requestCancel();
         }
     	if (markCancelled) {
-            logMMCommand(workItem.requestMsg, false, true, 0);
+            logMMCommand(workItem, false, true, 0);
     	} else {
     		LogManager.logDetail(LogConstants.CTX_DQP, DQPPlugin.Util.getString("DQPCore.failed_to_cancel")); //$NON-NLS-1$
     	}
@@ -499,17 +499,22 @@
 		}
 	}
     
-    void logMMCommand(RequestMessage msg, boolean isBegin, boolean isCancel, int rowCount) {
-        if(this.tracker == null || msg == null || !tracker.willRecordMMCmd()){
+    void logMMCommand(RequestWorkItem workItem, boolean isBegin, boolean isCancel, int rowCount) {
+        if(this.tracker == null || !tracker.willRecordMMCmd()){
             return;
         }
+        RequestMessage msg = workItem.requestMsg;
         DQPWorkContext workContext = DQPWorkContext.getWorkContext();
         RequestID rID = new RequestID(workContext.getConnectionID(), msg.getExecutionId());
         String command = null;
-        String txnID = null;
     	if(isBegin && !isCancel){
     		command = msg.getCommandString();
     	}
+    	String txnID = null;
+		TransactionContext tc = workItem.getTransactionContext();
+		if (tc != null) {
+			txnID = tc.getTxnID();
+		}
     	String appName = workContext.getAppName();
         // Log to request log
         short point = isBegin? TrackerLogConstants.CMD_POINT.BEGIN:TrackerLogConstants.CMD_POINT.END;
@@ -549,6 +554,10 @@
 	TrackingService getTracker() {
 		return tracker;
 	}
+	
+	void setTracker(TrackingService tracker) {
+		this.tracker = tracker;
+	}
 
 	public TransactionService getTransactionService() {
 		if (transactionService == null) {

Modified: trunk/engine/src/main/java/org/teiid/dqp/internal/process/RequestWorkItem.java
===================================================================
--- trunk/engine/src/main/java/org/teiid/dqp/internal/process/RequestWorkItem.java	2009-04-21 19:43:28 UTC (rev 817)
+++ trunk/engine/src/main/java/org/teiid/dqp/internal/process/RequestWorkItem.java	2009-04-21 20:37:26 UTC (rev 818)
@@ -361,7 +361,7 @@
 		if (this.processingException != null) {
 			sendError();			
 		} else {
-	        dqpCore.logMMCommand(requestMsg, false, false, this.processor.getHighestRow());
+	        dqpCore.logMMCommand(this, false, false, this.processor.getHighestRow());
 		}
 	}
 
@@ -710,6 +710,10 @@
 		return transactionContext;
 	}
 	
+	void setTransactionContext(TransactionContext transactionContext) {
+		this.transactionContext = transactionContext;
+	}
+	
 	Collection<DataTierTupleSource> getConnectorRequests() {
 		return new LinkedList<DataTierTupleSource>(this.connectorInfo.values());
 	}

Modified: trunk/engine/src/test/java/org/teiid/dqp/internal/process/TestDQPCoreRequestHandling.java
===================================================================
--- trunk/engine/src/test/java/org/teiid/dqp/internal/process/TestDQPCoreRequestHandling.java	2009-04-21 19:43:28 UTC (rev 817)
+++ trunk/engine/src/test/java/org/teiid/dqp/internal/process/TestDQPCoreRequestHandling.java	2009-04-21 20:37:26 UTC (rev 818)
@@ -26,6 +26,8 @@
 import java.util.HashSet;
 import java.util.Set;
 
+import org.mockito.Mockito;
+import org.teiid.connector.xa.api.TransactionContext;
 import org.teiid.dqp.internal.process.DQPCore;
 import org.teiid.dqp.internal.process.DQPWorkContext;
 import org.teiid.dqp.internal.process.DataTierTupleSource;
@@ -34,16 +36,14 @@
 import junit.framework.TestCase;
 
 import com.metamatrix.api.exception.MetaMatrixException;
-import com.metamatrix.common.buffer.TupleSourceID;
 import com.metamatrix.dqp.exception.SourceWarning;
 import com.metamatrix.dqp.internal.datamgr.ConnectorID;
 import com.metamatrix.dqp.message.AtomicRequestMessage;
 import com.metamatrix.dqp.message.RequestID;
 import com.metamatrix.dqp.message.RequestMessage;
+import com.metamatrix.dqp.service.TrackingService;
 import com.metamatrix.platform.security.api.MetaMatrixSessionID;
 import com.metamatrix.platform.security.api.SessionToken;
-import com.metamatrix.query.analysis.AnalysisRecord;
-import com.metamatrix.query.processor.QueryProcessor;
 import com.metamatrix.query.sql.lang.Command;
 import com.metamatrix.server.serverapi.RequestInfo;
 
@@ -92,7 +92,7 @@
 	private RequestID addRequest(DQPCore rm, String sessionId, int executionId) {
 		RequestMessage r0 = new RequestMessage("test command"); //$NON-NLS-1$
         RequestID id = new RequestID(sessionId, executionId);
-        addRequest(rm, r0, id, null, null, new TupleSourceID("ts-1"), null, null, null);  //$NON-NLS-1$
+        addRequest(rm, r0, id, null, null);  //$NON-NLS-1$
 		return id;
 	}
 
@@ -119,7 +119,7 @@
         DQPCore rm = new DQPCore();
         RequestMessage r0 = new RequestMessage("foo"); //$NON-NLS-1$
         RequestID requestID = new RequestID(SESSION_STRING, 1);
-        RequestWorkItem workItem = addRequest(rm, r0, requestID, null, null, new TupleSourceID("ts-1"), null, null, null);  //$NON-NLS-1$
+        RequestWorkItem workItem = addRequest(rm, r0, requestID, null, null);  //$NON-NLS-1$
         assertTrue(workItem.resultsCursor.resultsRequested);
     }
     
@@ -128,7 +128,7 @@
         RequestMessage r0 = new RequestMessage("foo"); //$NON-NLS-1$
         RequestID requestID = new RequestID(SESSION_STRING, 1);
 
-        RequestWorkItem workItem = addRequest(rm, r0, requestID, null, null, new TupleSourceID("ts-1"), null, null, null);  //$NON-NLS-1$
+        RequestWorkItem workItem = addRequest(rm, r0, requestID, null, null);  //$NON-NLS-1$
                 
         workItem.addSourceFailureDetails(getSourceFailures("Model1", "Binding1", "Warning1")); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
         workItem.addSourceFailureDetails(getSourceFailures("Model2", "Binding2", "Warning2")); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
@@ -141,10 +141,7 @@
                     RequestMessage requestMsg,
                     RequestID id,
                     Command originalCommand,
-                    QueryProcessor processor,
-                    TupleSourceID resultsID,
-                    AnalysisRecord analysisRecord,
-                    Collection schemas, DQPWorkContext workContext) {
+                    DQPWorkContext workContext) {
      
     	if (workContext == null) {
 	    	workContext = new DQPWorkContext();
@@ -160,7 +157,7 @@
         DQPCore rm = new DQPCore();
         RequestMessage r0 = new RequestMessage("foo"); //$NON-NLS-1$
         RequestID requestID = new RequestID(SESSION_STRING, 1);
-        RequestWorkItem workItem = addRequest(rm, r0, requestID, null, null, null, null, null, null);
+        RequestWorkItem workItem = addRequest(rm, r0, requestID, null, null);
         AtomicRequestMessage atomicReq = new AtomicRequestMessage(workItem.requestMsg, workItem.dqpWorkContext, 1);
 
         DataTierTupleSource info = new DataTierTupleSource(null, atomicReq, null, new ConnectorID("connID"), workItem); //$NON-NLS-1$
@@ -174,7 +171,7 @@
         DQPCore rm = new DQPCore();
         RequestMessage r0 = new RequestMessage("foo"); //$NON-NLS-1$
         RequestID requestID = new RequestID(SESSION_STRING, 1);
-        RequestWorkItem workItem = addRequest(rm, r0, requestID, null, null, null, null, null, null);
+        RequestWorkItem workItem = addRequest(rm, r0, requestID, null, null);
         AtomicRequestMessage atomicReq = new AtomicRequestMessage(workItem.requestMsg, workItem.dqpWorkContext, 1);
 
         DataTierTupleSource info = new DataTierTupleSource(null, atomicReq, null, new ConnectorID("connID"), workItem); //$NON-NLS-1$
@@ -186,4 +183,19 @@
         assertNull(arInfo);
     }
     
+    public void testLogTxnID() {
+    	DQPCore rm = new DQPCore();
+    	TrackingService ts = Mockito.mock(TrackingService.class);
+    	Mockito.stub(ts.willRecordMMCmd()).toReturn(true);
+    	rm.setTracker(ts);
+        RequestMessage r0 = new RequestMessage("foo"); //$NON-NLS-1$
+        RequestID requestID = new RequestID(SESSION_STRING, 1);
+        RequestWorkItem workItem = addRequest(rm, r0, requestID, null, null);
+        TransactionContext tc = Mockito.mock(TransactionContext.class);
+        Mockito.stub(tc.getTxnID()).toReturn("mytxnid"); //$NON-NLS-1$
+        workItem.setTransactionContext(tc);
+        rm.logMMCommand(workItem, true, true, -1);
+        Mockito.verify(ts, Mockito.times(1)).log("C.0", "mytxnid", (short)1, (short)1, null, null, null, null, null, null, -1); //$NON-NLS-1$ //$NON-NLS-2$
+    }
+    
 }

Modified: trunk/engine/src/test/java/org/teiid/dqp/internal/process/TestDataTierManager.java
===================================================================
--- trunk/engine/src/test/java/org/teiid/dqp/internal/process/TestDataTierManager.java	2009-04-21 19:43:28 UTC (rev 817)
+++ trunk/engine/src/test/java/org/teiid/dqp/internal/process/TestDataTierManager.java	2009-04-21 20:37:26 UTC (rev 818)
@@ -130,7 +130,7 @@
         context.setVdbVersion("1"); //$NON-NLS-1$
         context.setQueryProcessorFactory(new SimpleQueryProcessorFactory(bs.getBufferManager(), dtm, new DefaultCapabilitiesFinder(), null, metadata));
         processor = new QueryProcessor(new FakeProcessorPlan(), context, bs.getBufferManager(), dtm);
-        workItem = TestDQPCoreRequestHandling.addRequest(rm, original, requestID, null, processor, null, null, null, workContext);
+        workItem = TestDQPCoreRequestHandling.addRequest(rm, original, requestID, null, workContext);
         
         request = new AtomicRequestMessage(original, workContext, nodeId);
         request.setCommand(command);

Modified: trunk/engine/src/test/java/org/teiid/dqp/internal/process/TestMetaDataProcessor.java
===================================================================
--- trunk/engine/src/test/java/org/teiid/dqp/internal/process/TestMetaDataProcessor.java	2009-04-21 19:43:28 UTC (rev 817)
+++ trunk/engine/src/test/java/org/teiid/dqp/internal/process/TestMetaDataProcessor.java	2009-04-21 20:37:26 UTC (rev 818)
@@ -79,7 +79,7 @@
         // Initialize components
         RequestID requestID = workContext.getRequestID(1);  
         RequestMessage requestMsg = new RequestMessage(sql);
-        TestDQPCoreRequestHandling.addRequest(requestMgr, requestMsg, requestID, command, null, null, AnalysisRecord.createNonRecordingRecord(), null, null); //$NON-NLS-1$
+        TestDQPCoreRequestHandling.addRequest(requestMgr, requestMsg, requestID, command, null); //$NON-NLS-1$
         
         ApplicationEnvironment env = new ApplicationEnvironment();
         FakeVDBService vdbService = new FakeVDBService();




More information about the teiid-commits mailing list