use of org.apache.samza.system.IncomingMessageEnvelope in project samza by apache.
the class TestTaskCallbackManager method testUpdateCallbackWithCoordinatorRequests.
@Test
public void testUpdateCallbackWithCoordinatorRequests() {
TaskName taskName = new TaskName("Partition 0");
SystemStreamPartition ssp = new SystemStreamPartition("kafka", "topic", new Partition(0));
// simulate out of order
IncomingMessageEnvelope envelope2 = new IncomingMessageEnvelope(ssp, "2", null, null);
ReadableCoordinator coordinator2 = new ReadableCoordinator(taskName);
coordinator2.shutdown(TaskCoordinator.RequestScope.ALL_TASKS_IN_CONTAINER);
TaskCallbackImpl callback2 = new TaskCallbackImpl(listener, taskName, envelope2, coordinator2, 2, 0);
List<TaskCallbackImpl> callbacksToUpdate = callbackManager.updateCallback(callback2);
assertTrue(callbacksToUpdate.isEmpty());
IncomingMessageEnvelope envelope1 = new IncomingMessageEnvelope(ssp, "1", null, null);
ReadableCoordinator coordinator1 = new ReadableCoordinator(taskName);
coordinator1.commit(TaskCoordinator.RequestScope.CURRENT_TASK);
TaskCallbackImpl callback1 = new TaskCallbackImpl(listener, taskName, envelope1, coordinator1, 1, 0);
callbacksToUpdate = callbackManager.updateCallback(callback1);
assertTrue(callbacksToUpdate.isEmpty());
IncomingMessageEnvelope envelope0 = new IncomingMessageEnvelope(ssp, "0", null, null);
ReadableCoordinator coordinator = new ReadableCoordinator(taskName);
TaskCallbackImpl callback0 = new TaskCallbackImpl(listener, taskName, envelope0, coordinator, 0, 0);
callbacksToUpdate = callbackManager.updateCallback(callback0);
assertEquals(2, callbacksToUpdate.size());
//Check for envelope0
TaskCallbackImpl taskCallback = callbacksToUpdate.get(0);
assertTrue(taskCallback.matchSeqNum(0));
assertEquals(ssp, taskCallback.envelope.getSystemStreamPartition());
assertEquals("0", taskCallback.envelope.getOffset());
//Check for envelope1
taskCallback = callbacksToUpdate.get(1);
assertTrue(taskCallback.matchSeqNum(1));
assertEquals(ssp, taskCallback.envelope.getSystemStreamPartition());
assertEquals("1", taskCallback.envelope.getOffset());
}
use of org.apache.samza.system.IncomingMessageEnvelope in project samza by apache.
the class TestTaskCallbackManager method testUpdateShouldReturnAllCompletedCallbacksTillTheCommitRequestDefined.
@Test
public void testUpdateShouldReturnAllCompletedCallbacksTillTheCommitRequestDefined() {
TaskName taskName = new TaskName("Partition 0");
SystemStreamPartition ssp1 = new SystemStreamPartition("kafka", "topic", new Partition(0));
SystemStreamPartition ssp2 = new SystemStreamPartition("kafka", "topic", new Partition(0));
// Callback for Envelope3 contains commit request.
IncomingMessageEnvelope envelope3 = new IncomingMessageEnvelope(ssp2, "0", null, null);
ReadableCoordinator coordinator3 = new ReadableCoordinator(taskName);
coordinator3.commit(TaskCoordinator.RequestScope.CURRENT_TASK);
TaskCallbackImpl callback3 = new TaskCallbackImpl(listener, taskName, envelope3, coordinator3, 3, 0);
List<TaskCallbackImpl> callbacksToUpdate = callbackManager.updateCallback(callback3);
assertTrue(callbacksToUpdate.isEmpty());
IncomingMessageEnvelope envelope2 = new IncomingMessageEnvelope(ssp1, "2", null, null);
ReadableCoordinator coordinator2 = new ReadableCoordinator(taskName);
coordinator2.shutdown(TaskCoordinator.RequestScope.ALL_TASKS_IN_CONTAINER);
TaskCallbackImpl callback2 = new TaskCallbackImpl(listener, taskName, envelope2, coordinator2, 2, 0);
callbacksToUpdate = callbackManager.updateCallback(callback2);
assertTrue(callbacksToUpdate.isEmpty());
IncomingMessageEnvelope envelope1 = new IncomingMessageEnvelope(ssp1, "1", null, null);
ReadableCoordinator coordinator1 = new ReadableCoordinator(taskName);
coordinator1.commit(TaskCoordinator.RequestScope.CURRENT_TASK);
TaskCallbackImpl callback1 = new TaskCallbackImpl(listener, taskName, envelope1, coordinator1, 1, 0);
callbacksToUpdate = callbackManager.updateCallback(callback1);
assertTrue(callbacksToUpdate.isEmpty());
// Callback for Envelope0 contains commit request.
IncomingMessageEnvelope envelope0 = new IncomingMessageEnvelope(ssp1, "0", null, null);
ReadableCoordinator coordinator = new ReadableCoordinator(taskName);
TaskCallbackImpl callback0 = new TaskCallbackImpl(listener, taskName, envelope0, coordinator, 0, 0);
// Check for both Envelope1, Envelope2, Envelope3 in callbacks to commit.
// Two callbacks belonging to different system partition and has commitRequest defined is returned.
callbacksToUpdate = callbackManager.updateCallback(callback0);
assertEquals(2, callbacksToUpdate.size());
TaskCallbackImpl callback = callbacksToUpdate.get(0);
assertTrue(callback.matchSeqNum(0));
assertEquals(envelope0.getSystemStreamPartition(), callback.envelope.getSystemStreamPartition());
assertEquals(envelope0.getOffset(), callback.envelope.getOffset());
callback = callbacksToUpdate.get(1);
assertTrue(callback.matchSeqNum(1));
assertEquals(envelope1.getSystemStreamPartition(), callback.envelope.getSystemStreamPartition());
assertEquals(envelope1.getOffset(), callback.envelope.getOffset());
}
use of org.apache.samza.system.IncomingMessageEnvelope in project samza by apache.
the class TestTaskCallbackManager method testUpdateCallbackInOrder.
@Test
public void testUpdateCallbackInOrder() {
TaskName taskName = new TaskName("Partition 0");
SystemStreamPartition ssp = new SystemStreamPartition("kafka", "topic", new Partition(0));
ReadableCoordinator coordinator = new ReadableCoordinator(taskName);
IncomingMessageEnvelope envelope0 = new IncomingMessageEnvelope(ssp, "0", null, null);
TaskCallbackImpl callback0 = new TaskCallbackImpl(listener, taskName, envelope0, coordinator, 0, 0);
List<TaskCallbackImpl> callbacksToUpdate = callbackManager.updateCallback(callback0);
assertEquals(1, callbacksToUpdate.size());
TaskCallbackImpl callback = callbacksToUpdate.get(0);
assertTrue(callback.matchSeqNum(0));
assertEquals(ssp, callback.envelope.getSystemStreamPartition());
assertEquals("0", callback.envelope.getOffset());
IncomingMessageEnvelope envelope1 = new IncomingMessageEnvelope(ssp, "1", null, null);
TaskCallbackImpl callback1 = new TaskCallbackImpl(listener, taskName, envelope1, coordinator, 1, 0);
callbacksToUpdate = callbackManager.updateCallback(callback1);
assertEquals(1, callbacksToUpdate.size());
callback = callbacksToUpdate.get(0);
assertTrue(callback.matchSeqNum(1));
assertEquals(ssp, callback.envelope.getSystemStreamPartition());
assertEquals("1", callback.envelope.getOffset());
}
use of org.apache.samza.system.IncomingMessageEnvelope in project samza by apache.
the class HdfsSystemConsumer method doPoll.
private void doPoll(MultiFileHdfsReader reader) {
SystemStreamPartition systemStreamPartition = reader.getSystemStreamPartition();
while (reader.hasNext() && !isShutdown) {
IncomingMessageEnvelope messageEnvelope = reader.readNext();
offerMessage(systemStreamPartition, messageEnvelope);
consumerMetrics.incNumEvents(systemStreamPartition);
consumerMetrics.incTotalNumEvents();
}
offerMessage(systemStreamPartition, IncomingMessageEnvelope.buildEndOfStreamEnvelope(systemStreamPartition));
reader.close();
}
use of org.apache.samza.system.IncomingMessageEnvelope in project samza by apache.
the class TestMultiFileHdfsReader method testReconnect.
@Test
public void testReconnect() {
SystemStreamPartition ssp = new SystemStreamPartition("hdfs", "testStream", new Partition(0));
MultiFileHdfsReader multiReader = new MultiFileHdfsReader(HdfsReaderFactory.ReaderType.AVRO, ssp, Arrays.asList(descriptors), "0:0");
// first read a few events, and then reconnect
for (int i = 0; i < NUM_EVENTS / 2; i++) {
multiReader.readNext();
}
IncomingMessageEnvelope envelope = multiReader.readNext();
multiReader.reconnect();
IncomingMessageEnvelope envelopeAfterReconnect = multiReader.readNext();
Assert.assertEquals(envelope, envelopeAfterReconnect);
multiReader.close();
}
Aggregations