[teiid-commits] teiid SVN: r3819 - in branches/7.7.x/engine/src: test/java/org/teiid/dqp/internal/process and 1 other directories.

teiid-commits at lists.jboss.org teiid-commits at lists.jboss.org
Tue Jan 24 16:35:01 EST 2012


Author: shawkins
Date: 2012-01-24 16:35:01 -0500 (Tue, 24 Jan 2012)
New Revision: 3819

Modified:
   branches/7.7.x/engine/src/main/java/org/teiid/dqp/internal/process/DataTierTupleSource.java
   branches/7.7.x/engine/src/test/java/org/teiid/dqp/internal/process/TestDataTierManager.java
   branches/7.7.x/engine/src/test/java/org/teiid/dqp/service/AutoGenDataService.java
Log:
TEIID-1829 fix to non-partial results warnings

Modified: branches/7.7.x/engine/src/main/java/org/teiid/dqp/internal/process/DataTierTupleSource.java
===================================================================
--- branches/7.7.x/engine/src/main/java/org/teiid/dqp/internal/process/DataTierTupleSource.java	2012-01-24 20:59:26 UTC (rev 3818)
+++ branches/7.7.x/engine/src/main/java/org/teiid/dqp/internal/process/DataTierTupleSource.java	2012-01-24 21:35:01 UTC (rev 3819)
@@ -213,6 +213,7 @@
     public List<?> nextTuple() throws TeiidComponentException, TeiidProcessingException {
     	while (true) {
     		if (arm == null) {
+    			boolean partial = false;
     			AtomicResultsMessage results = null;
     			try {
 	    			if (futureResult != null || !aqr.isSerial()) {
@@ -237,6 +238,7 @@
 	    			}
     			} catch (TranslatorException e) {
     				results = exceptionOccurred(e, true);
+    				partial = true;
     			} catch (DataNotAvailableException e) {
     				if (e.getRetryDelay() >= 0) {
 	    				workItem.scheduleWork(new Runnable() {
@@ -250,7 +252,7 @@
     				}
     				throw BlockedException.block(aqr.getAtomicRequestID(), "Blocking on DataNotAvailableException"); //$NON-NLS-1$
     			} 
-    			receiveResults(results);
+    			receiveResults(results, partial);
     		}
 	    	if (index < arm.getResults().length) {
 	    		if (limit-- == 0) {
@@ -416,14 +418,14 @@
 		throw new TeiidProcessingException(exception, this.getConnectorName() + ": " + exception.getMessage()); //$NON-NLS-1$
 	}
 
-	void receiveResults(AtomicResultsMessage response) {
+	void receiveResults(AtomicResultsMessage response, boolean partial) {
 		this.arm = response;
 		explicitClose |= !arm.supportsImplicitClose();
         rowsProcessed += response.getResults().length;
         index = 0;
 		if (response.getWarnings() != null) {
 			for (Exception warning : response.getWarnings()) {
-				SourceWarning sourceFailure = new SourceWarning(this.aqr.getModelName(), aqr.getConnectorName(), warning, true);
+				SourceWarning sourceFailure = new SourceWarning(this.aqr.getModelName(), aqr.getConnectorName(), warning, partial);
 		        workItem.addSourceFailureDetails(sourceFailure);
 			}
 		}

Modified: branches/7.7.x/engine/src/test/java/org/teiid/dqp/internal/process/TestDataTierManager.java
===================================================================
--- branches/7.7.x/engine/src/test/java/org/teiid/dqp/internal/process/TestDataTierManager.java	2012-01-24 20:59:26 UTC (rev 3818)
+++ branches/7.7.x/engine/src/test/java/org/teiid/dqp/internal/process/TestDataTierManager.java	2012-01-24 21:35:01 UTC (rev 3819)
@@ -29,6 +29,7 @@
 import org.mockito.Mockito;
 import org.teiid.cache.DefaultCacheFactory;
 import org.teiid.client.RequestMessage;
+import org.teiid.client.SourceWarning;
 import org.teiid.common.buffer.BlockedException;
 import org.teiid.dqp.internal.datamgr.ConnectorManagerRepository;
 import org.teiid.dqp.internal.datamgr.FakeTransactionService;
@@ -124,6 +125,26 @@
         assertNull(workItem.getConnectorRequest(request.getAtomicRequestID()));
     }
     
+    @Test public void testDataTierTupleSourceWarnings() throws Exception {
+    	helpSetup(1);
+    	connectorManager.addWarning = true;
+    	for (int i = 0; i < 10;) {
+	    	try {
+	    		info.nextTuple();
+	    		i++;
+	    	} catch (BlockedException e) {
+	    		Thread.sleep(50);
+	    	}
+    	}
+        assertNotNull(workItem.getConnectorRequest(request.getAtomicRequestID()));
+        assertNull(info.nextTuple());
+        assertEquals(1, workItem.getWarnings().size());
+        SourceWarning warning = (SourceWarning) workItem.getWarnings().get(0);
+		assertFalse(warning.isPartialResultsError());
+        info.closeSource();
+        assertNull(workItem.getConnectorRequest(request.getAtomicRequestID()));
+    }
+    
     @Test public void testDataTierTupleSourceLimit() throws Exception {
     	limit = 1;
     	helpSetup(1);
@@ -147,6 +168,8 @@
     	for (int i = 0; i < 10; i++) {
 	    	try {
 	    		assertNull(info.nextTuple());
+	    		SourceWarning warning = (SourceWarning) workItem.getWarnings().get(0);
+	    		assertTrue(warning.isPartialResultsError());
 	    		return;
 	    	} catch (BlockedException e) {
 	    		Thread.sleep(50);

Modified: branches/7.7.x/engine/src/test/java/org/teiid/dqp/service/AutoGenDataService.java
===================================================================
--- branches/7.7.x/engine/src/test/java/org/teiid/dqp/service/AutoGenDataService.java	2012-01-24 20:59:26 UTC (rev 3818)
+++ branches/7.7.x/engine/src/test/java/org/teiid/dqp/service/AutoGenDataService.java	2012-01-24 21:35:01 UTC (rev 3819)
@@ -61,6 +61,7 @@
     private final AtomicInteger executeCount = new AtomicInteger();
     private final AtomicInteger closeCount = new AtomicInteger();
     private boolean useIntCounter;
+	public boolean addWarning;
 
     public AutoGenDataService() {
     	super("FakeConnector","FakeConnector"); //$NON-NLS-1$ //$NON-NLS-2$
@@ -149,6 +150,9 @@
 					dataNotAvailable = -2;
 					throw new DataNotAvailableException(delay);
 				}
+				if (addWarning) {
+					msg.setWarnings(Arrays.asList(new Exception()));
+				}
 				return msg;
 			}
 			



More information about the teiid-commits mailing list