[teiid-commits] teiid SVN: r3047 - in trunk: client/src/main/java/org/teiid/jdbc and 1 other directories.

teiid-commits at lists.jboss.org teiid-commits at lists.jboss.org
Tue Mar 29 12:02:56 EDT 2011


Author: shawkins
Date: 2011-03-29 12:02:56 -0400 (Tue, 29 Mar 2011)
New Revision: 3047

Modified:
   trunk/client/src/main/java/org/teiid/client/RequestMessage.java
   trunk/client/src/main/java/org/teiid/jdbc/StatementImpl.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
Log:
TEIID-1536 refinement of thread usage sync odbc requests will use their calling thread and by-pass the max plan check

Modified: trunk/client/src/main/java/org/teiid/client/RequestMessage.java
===================================================================
--- trunk/client/src/main/java/org/teiid/client/RequestMessage.java	2011-03-28 20:16:39 UTC (rev 3046)
+++ trunk/client/src/main/java/org/teiid/client/RequestMessage.java	2011-03-29 16:02:56 UTC (rev 3047)
@@ -89,6 +89,7 @@
     private long executionId;
     private int transactionIsolation;
     private boolean noExec;
+    private transient boolean sync;
     
     public RequestMessage() {
     }
@@ -97,6 +98,14 @@
 		this();
 		setCommands(command);
 	}
+	
+	public boolean isSync() {
+		return sync;
+	}
+	
+	public void setSync(boolean sync) {
+		this.sync = sync;
+	}
 
     public int getFetchSize() {
         return fetchSize;

Modified: trunk/client/src/main/java/org/teiid/jdbc/StatementImpl.java
===================================================================
--- trunk/client/src/main/java/org/teiid/jdbc/StatementImpl.java	2011-03-28 20:16:39 UTC (rev 3046)
+++ trunk/client/src/main/java/org/teiid/jdbc/StatementImpl.java	2011-03-29 16:02:56 UTC (rev 3047)
@@ -525,6 +525,7 @@
         }
         
         final RequestMessage reqMessage = createRequestMessage(commands, isBatchedCommand, resultsMode);
+        reqMessage.setSync(synch);
     	ResultsFuture<Boolean> result = execute(reqMessage);
     	if (synch) {
     		try {

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	2011-03-28 20:16:39 UTC (rev 3046)
+++ trunk/engine/src/main/java/org/teiid/dqp/internal/process/DQPCore.java	2011-03-29 16:02:56 UTC (rev 3047)
@@ -327,7 +327,7 @@
     	logMMCommand(workItem, Event.NEW, null); 
         addRequest(requestID, workItem, state);
         synchronized (waitingPlans) {
-			if (currentlyActivePlans < maxActivePlans) {
+			if (currentlyActivePlans < maxActivePlans || (!DQPWorkContext.getWorkContext().useCallingThread() && requestMsg.isSync())) {
 				startActivePlan(workItem);
 			} else {
 				if (LogManager.isMessageToBeRecorded(LogConstants.CTX_DQP, MessageLevel.DETAIL)) {
@@ -358,7 +358,7 @@
 
 	private void startActivePlan(RequestWorkItem workItem) {
 		workItem.active = true;
-		if (workItem.getDqpWorkContext().useCallingThread()) {
+		if (workItem.getDqpWorkContext().useCallingThread() || workItem.requestMsg.isSync()) {
 			this.currentlyActivePlans++;
 			workItem.run();
 		} else {

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	2011-03-28 20:16:39 UTC (rev 3046)
+++ trunk/engine/src/main/java/org/teiid/dqp/internal/process/RequestWorkItem.java	2011-03-29 16:02:56 UTC (rev 3047)
@@ -161,7 +161,7 @@
     private long processingTimestamp = System.currentTimeMillis();
     
     public RequestWorkItem(DQPCore dqpCore, RequestMessage requestMsg, Request request, ResultsReceiver<ResultsMessage> receiver, RequestID requestID, DQPWorkContext workContext) {
-    	super(workContext.useCallingThread());
+    	super(workContext.useCallingThread() || requestMsg.isSync());
         this.requestMsg = requestMsg;
         this.requestID = requestID;
         this.processorTimeslice = dqpCore.getProcessorTimeSlice();



More information about the teiid-commits mailing list