@Override public void onCompletion(FutureWork<T> future) { WorkWrapper<?> nextWork = null; synchronized (queue) { if (!submitted) { return; } synchronized (RequestWorkItem.this) { if (isProcessing()) { totalThreads--; moreWork(); return; } } nextWork = queue.pollFirst(); if (nextWork == null) { totalThreads--; } else { nextWork.submitted = true; } } if (nextWork != null) { dqpCore.addWork(nextWork.work); } } }
@Override public void onCompletion(FutureWork<T> future) { WorkWrapper<?> nextWork = null; synchronized (queue) { if (!submitted) { return; } synchronized (RequestWorkItem.this) { if (isProcessing()) { totalThreads--; moreWork(); return; } } nextWork = queue.pollFirst(); if (nextWork == null) { totalThreads--; } else { nextWork.submitted = true; } } if (nextWork != null) { dqpCore.addWork(nextWork.work); } } }
@Override public void onCompletion(FutureWork<T> future) { WorkWrapper<?> nextWork = null; synchronized (queue) { if (!submitted) { return; } synchronized (RequestWorkItem.this) { if (isProcessing()) { totalThreads--; moreWork(); return; } } nextWork = queue.pollFirst(); if (nextWork == null) { totalThreads--; } else { nextWork.submitted = true; } } if (nextWork != null) { dqpCore.addWork(nextWork.work); } } }
@Test public void testFinalRow() throws Exception { String sql = "SELECT A.IntKey FROM BQT1.SmallA as A"; //$NON-NLS-1$ String userName = "1"; //$NON-NLS-1$ String sessionid = "1"; //$NON-NLS-1$ RequestMessage reqMsg = exampleRequestMessage(sql); reqMsg.setCursorType(ResultSet.TYPE_FORWARD_ONLY); DQPWorkContext.getWorkContext().getSession().setSessionId(sessionid); DQPWorkContext.getWorkContext().getSession().setUserName(userName); ((BufferManagerImpl)core.getBufferManager()).setProcessorBatchSize(10); Future<ResultsMessage> message = core.executeRequest(reqMsg.getExecutionId(), reqMsg); ResultsMessage rm = message.get(500000, TimeUnit.MILLISECONDS); assertNull(rm.getException()); assertEquals(10, rm.getResultsList().size()); RequestWorkItem item = core.getRequestWorkItem(DQPWorkContext.getWorkContext().getRequestID(reqMsg.getExecutionId())); while(item.isProcessing()); synchronized (item) { for (int i = 0; i < 100; i++) { Thread.sleep(10); } } assertEquals(10, item.resultsBuffer.getRowCount()); }
break; default: if (holder.isProcessing()) { req.setThreadState(ThreadState.RUNNING); } else {
break; default: if (holder.isProcessing()) { req.setThreadState(ThreadState.RUNNING); } else {
break; default: if (holder.isProcessing()) { req.setThreadState(ThreadState.RUNNING); } else {