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;
}
Show replies by date