Java Code Examples for org.apache.flink.runtime.event.AbstractEvent#getClass()
The following examples show how to use
org.apache.flink.runtime.event.AbstractEvent#getClass() .
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: StreamTaskNetworkInput.java From flink with Apache License 2.0 | 6 votes |
private void processBufferOrEvent(BufferOrEvent bufferOrEvent) throws IOException { if (bufferOrEvent.isBuffer()) { lastChannel = channelIndexes.get(bufferOrEvent.getChannelInfo()); checkState(lastChannel != StreamTaskInput.UNSPECIFIED); currentRecordDeserializer = recordDeserializers[lastChannel]; checkState(currentRecordDeserializer != null, "currentRecordDeserializer has already been released"); currentRecordDeserializer.setNextBuffer(bufferOrEvent.getBuffer()); } else { // Event received final AbstractEvent event = bufferOrEvent.getEvent(); // TODO: with checkpointedInputGate.isFinished() we might not need to support any events on this level. if (event.getClass() != EndOfPartitionEvent.class) { throw new IOException("Unexpected event: " + event); } // release the record deserializer immediately, // which is very valuable in case of bounded stream releaseDeserializer(channelIndexes.get(bufferOrEvent.getChannelInfo())); } }
Example 2
Source File: StreamTwoInputProcessor.java From flink with Apache License 2.0 | 6 votes |
private void processBufferOrEvent(BufferOrEvent bufferOrEvent) throws Exception { if (bufferOrEvent.isBuffer()) { currentChannel = bufferOrEvent.getChannelIndex(); currentRecordDeserializer = recordDeserializers[currentChannel]; currentRecordDeserializer.setNextBuffer(bufferOrEvent.getBuffer()); } else { // Event received final AbstractEvent event = bufferOrEvent.getEvent(); // TODO: with barrierHandler.isFinished() we might not need to support any events on this level. if (event.getClass() != EndOfPartitionEvent.class) { throw new IOException("Unexpected event: " + event); } handleEndOfPartitionEvent(bufferOrEvent.getChannelIndex()); } }
Example 3
Source File: StreamTaskNetworkInput.java From flink with Apache License 2.0 | 5 votes |
private void processBufferOrEvent(BufferOrEvent bufferOrEvent) throws IOException { if (bufferOrEvent.isBuffer()) { lastChannel = bufferOrEvent.getChannelIndex(); currentRecordDeserializer = recordDeserializers[lastChannel]; currentRecordDeserializer.setNextBuffer(bufferOrEvent.getBuffer()); } else { // Event received final AbstractEvent event = bufferOrEvent.getEvent(); // TODO: with checkpointedInputGate.isFinished() we might not need to support any events on this level. if (event.getClass() != EndOfPartitionEvent.class) { throw new IOException("Unexpected event: " + event); } } }
Example 4
Source File: SingleInputGate.java From flink with Apache License 2.0 | 5 votes |
private BufferOrEvent transformEvent( Buffer buffer, boolean moreAvailable, InputChannel currentChannel) throws IOException, InterruptedException { final AbstractEvent event; try { event = EventSerializer.fromBuffer(buffer, getClass().getClassLoader()); } finally { buffer.recycleBuffer(); } if (event.getClass() == EndOfPartitionEvent.class) { channelsWithEndOfPartitionEvents.set(currentChannel.getChannelIndex()); if (channelsWithEndOfPartitionEvents.cardinality() == numberOfInputChannels) { // Because of race condition between: // 1. releasing inputChannelsWithData lock in this method and reaching this place // 2. empty data notification that re-enqueues a channel // we can end up with moreAvailable flag set to true, while we expect no more data. checkState(!moreAvailable || !pollNext().isPresent()); moreAvailable = false; hasReceivedAllEndOfPartitionEvents = true; markAvailable(); } currentChannel.releaseAllResources(); } return new BufferOrEvent(event, currentChannel.getChannelInfo(), moreAvailable, buffer.getSize()); }
Example 5
Source File: InputChannel.java From flink with Apache License 2.0 | 5 votes |
/** * Parses the buffer as an event and returns the {@link CheckpointBarrier} if the event is indeed a barrier or * returns null in all other cases. */ @Nullable protected CheckpointBarrier parseCheckpointBarrierOrNull(Buffer buffer) throws IOException { if (buffer.isBuffer()) { return null; } AbstractEvent event = EventSerializer.fromBuffer(buffer, getClass().getClassLoader()); // reset the buffer because it would be deserialized again in SingleInputGate while getting next buffer. // we can further improve to avoid double deserialization in the future. buffer.setReaderIndex(0); return event.getClass() == CheckpointBarrier.class ? (CheckpointBarrier) event : null; }
Example 6
Source File: RecoveredInputChannel.java From flink with Apache License 2.0 | 5 votes |
private boolean isEndOfChannelStateEvent(Buffer buffer) throws IOException { if (buffer.isBuffer()) { return false; } AbstractEvent event = EventSerializer.fromBuffer(buffer, getClass().getClassLoader()); buffer.setReaderIndex(0); return event.getClass() == EndOfChannelStateEvent.class; }
Example 7
Source File: AbstractReader.java From flink with Apache License 2.0 | 5 votes |
/** * Handles the event and returns whether the reader reached an end-of-stream event (either the * end of the whole stream or the end of an superstep). */ protected boolean handleEvent(AbstractEvent event) throws IOException { final Class<?> eventType = event.getClass(); try { // ------------------------------------------------------------ // Runtime events // ------------------------------------------------------------ // This event is also checked at the (single) input gate to release the respective // channel, at which it was received. if (eventType == EndOfPartitionEvent.class) { return true; } else if (eventType == EndOfSuperstepEvent.class) { return incrementEndOfSuperstepEventAndCheck(); } // ------------------------------------------------------------ // Task events (user) // ------------------------------------------------------------ else if (event instanceof TaskEvent) { taskEventHandler.publish((TaskEvent) event); return false; } else { throw new IllegalStateException("Received unexpected event of type " + eventType + " at reader."); } } catch (Throwable t) { throw new IOException("Error while handling event of type " + eventType + ": " + t.getMessage(), t); } }
Example 8
Source File: EventSerializer.java From flink with Apache License 2.0 | 5 votes |
public static ByteBuffer toSerializedEvent(AbstractEvent event) throws IOException { final Class<?> eventClass = event.getClass(); if (eventClass == EndOfPartitionEvent.class) { return ByteBuffer.wrap(new byte[] { 0, 0, 0, END_OF_PARTITION_EVENT }); } else if (eventClass == CheckpointBarrier.class) { return serializeCheckpointBarrier((CheckpointBarrier) event); } else if (eventClass == EndOfSuperstepEvent.class) { return ByteBuffer.wrap(new byte[] { 0, 0, 0, END_OF_SUPERSTEP_EVENT }); } else if (eventClass == EndOfChannelStateEvent.class) { return ByteBuffer.wrap(new byte[] { 0, 0, 0, END_OF_CHANNEL_STATE_EVENT }); } else if (eventClass == CancelCheckpointMarker.class) { CancelCheckpointMarker marker = (CancelCheckpointMarker) event; ByteBuffer buf = ByteBuffer.allocate(12); buf.putInt(0, CANCEL_CHECKPOINT_MARKER_EVENT); buf.putLong(4, marker.getCheckpointId()); return buf; } else { try { final DataOutputSerializer serializer = new DataOutputSerializer(128); serializer.writeInt(OTHER_EVENT); serializer.writeUTF(event.getClass().getName()); event.write(serializer); return serializer.wrapAsByteBuffer(); } catch (IOException e) { throw new IOException("Error while serializing event.", e); } } }
Example 9
Source File: EventSerializer.java From Flink-CEPplus with Apache License 2.0 | 5 votes |
public static ByteBuffer toSerializedEvent(AbstractEvent event) throws IOException { final Class<?> eventClass = event.getClass(); if (eventClass == EndOfPartitionEvent.class) { return ByteBuffer.wrap(new byte[] { 0, 0, 0, END_OF_PARTITION_EVENT }); } else if (eventClass == CheckpointBarrier.class) { return serializeCheckpointBarrier((CheckpointBarrier) event); } else if (eventClass == EndOfSuperstepEvent.class) { return ByteBuffer.wrap(new byte[] { 0, 0, 0, END_OF_SUPERSTEP_EVENT }); } else if (eventClass == CancelCheckpointMarker.class) { CancelCheckpointMarker marker = (CancelCheckpointMarker) event; ByteBuffer buf = ByteBuffer.allocate(12); buf.putInt(0, CANCEL_CHECKPOINT_MARKER_EVENT); buf.putLong(4, marker.getCheckpointId()); return buf; } else { try { final DataOutputSerializer serializer = new DataOutputSerializer(128); serializer.writeInt(OTHER_EVENT); serializer.writeUTF(event.getClass().getName()); event.write(serializer); return serializer.wrapAsByteBuffer(); } catch (IOException e) { throw new IOException("Error while serializing event.", e); } } }
Example 10
Source File: SingleInputGate.java From flink with Apache License 2.0 | 5 votes |
private BufferOrEvent transformToBufferOrEvent( Buffer buffer, boolean moreAvailable, InputChannel currentChannel) throws IOException, InterruptedException { if (buffer.isBuffer()) { return new BufferOrEvent(buffer, currentChannel.getChannelIndex(), moreAvailable); } else { final AbstractEvent event; try { event = EventSerializer.fromBuffer(buffer, getClass().getClassLoader()); } finally { buffer.recycleBuffer(); } if (event.getClass() == EndOfPartitionEvent.class) { channelsWithEndOfPartitionEvents.set(currentChannel.getChannelIndex()); if (channelsWithEndOfPartitionEvents.cardinality() == numberOfInputChannels) { // Because of race condition between: // 1. releasing inputChannelsWithData lock in this method and reaching this place // 2. empty data notification that re-enqueues a channel // we can end up with moreAvailable flag set to true, while we expect no more data. checkState(!moreAvailable || !pollNext().isPresent()); moreAvailable = false; hasReceivedAllEndOfPartitionEvents = true; markAvailable(); } currentChannel.notifySubpartitionConsumed(); currentChannel.releaseAllResources(); } return new BufferOrEvent(event, currentChannel.getChannelIndex(), moreAvailable, buffer.getSize()); } }
Example 11
Source File: AbstractReader.java From flink with Apache License 2.0 | 5 votes |
/** * Handles the event and returns whether the reader reached an end-of-stream event (either the * end of the whole stream or the end of an superstep). */ protected boolean handleEvent(AbstractEvent event) throws IOException { final Class<?> eventType = event.getClass(); try { // ------------------------------------------------------------ // Runtime events // ------------------------------------------------------------ // This event is also checked at the (single) input gate to release the respective // channel, at which it was received. if (eventType == EndOfPartitionEvent.class) { return true; } else if (eventType == EndOfSuperstepEvent.class) { return incrementEndOfSuperstepEventAndCheck(); } // ------------------------------------------------------------ // Task events (user) // ------------------------------------------------------------ else if (event instanceof TaskEvent) { taskEventHandler.publish((TaskEvent) event); return false; } else { throw new IllegalStateException("Received unexpected event of type " + eventType + " at reader."); } } catch (Throwable t) { throw new IOException("Error while handling event of type " + eventType + ": " + t.getMessage(), t); } }
Example 12
Source File: EventSerializer.java From flink with Apache License 2.0 | 5 votes |
public static ByteBuffer toSerializedEvent(AbstractEvent event) throws IOException { final Class<?> eventClass = event.getClass(); if (eventClass == EndOfPartitionEvent.class) { return ByteBuffer.wrap(new byte[] { 0, 0, 0, END_OF_PARTITION_EVENT }); } else if (eventClass == CheckpointBarrier.class) { return serializeCheckpointBarrier((CheckpointBarrier) event); } else if (eventClass == EndOfSuperstepEvent.class) { return ByteBuffer.wrap(new byte[] { 0, 0, 0, END_OF_SUPERSTEP_EVENT }); } else if (eventClass == CancelCheckpointMarker.class) { CancelCheckpointMarker marker = (CancelCheckpointMarker) event; ByteBuffer buf = ByteBuffer.allocate(12); buf.putInt(0, CANCEL_CHECKPOINT_MARKER_EVENT); buf.putLong(4, marker.getCheckpointId()); return buf; } else { try { final DataOutputSerializer serializer = new DataOutputSerializer(128); serializer.writeInt(OTHER_EVENT); serializer.writeUTF(event.getClass().getName()); event.write(serializer); return serializer.wrapAsByteBuffer(); } catch (IOException e) { throw new IOException("Error while serializing event.", e); } } }
Example 13
Source File: AbstractReader.java From Flink-CEPplus with Apache License 2.0 | 5 votes |
/** * Handles the event and returns whether the reader reached an end-of-stream event (either the * end of the whole stream or the end of an superstep). */ protected boolean handleEvent(AbstractEvent event) throws IOException { final Class<?> eventType = event.getClass(); try { // ------------------------------------------------------------ // Runtime events // ------------------------------------------------------------ // This event is also checked at the (single) input gate to release the respective // channel, at which it was received. if (eventType == EndOfPartitionEvent.class) { return true; } else if (eventType == EndOfSuperstepEvent.class) { return incrementEndOfSuperstepEventAndCheck(); } // ------------------------------------------------------------ // Task events (user) // ------------------------------------------------------------ else if (event instanceof TaskEvent) { taskEventHandler.publish((TaskEvent) event); return false; } else { throw new IllegalStateException("Received unexpected event of type " + eventType + " at reader."); } } catch (Throwable t) { throw new IOException("Error while handling event of type " + eventType + ": " + t.getMessage(), t); } }
Example 14
Source File: TestSubpartitionConsumer.java From flink with Apache License 2.0 | 4 votes |
@Override public Boolean call() throws Exception { try { while (true) { if (Thread.interrupted()) { throw new InterruptedException(); } synchronized (dataAvailableNotification) { while (!dataAvailableNotification.getAndSet(false)) { dataAvailableNotification.wait(); } } final BufferAndBacklog bufferAndBacklog = subpartitionView.getNextBuffer(); if (isSlowConsumer) { Thread.sleep(random.nextInt(MAX_SLEEP_TIME_MS + 1)); } if (bufferAndBacklog != null) { if (bufferAndBacklog.isMoreAvailable()) { dataAvailableNotification.set(true); } if (bufferAndBacklog.buffer().isBuffer()) { callback.onBuffer(bufferAndBacklog.buffer()); } else { final AbstractEvent event = EventSerializer.fromBuffer(bufferAndBacklog.buffer(), getClass().getClassLoader()); callback.onEvent(event); bufferAndBacklog.buffer().recycleBuffer(); if (event.getClass() == EndOfPartitionEvent.class) { subpartitionView.notifySubpartitionConsumed(); return true; } } } else if (subpartitionView.isReleased()) { return true; } } } finally { subpartitionView.releaseAllResources(); } }
Example 15
Source File: TestSubpartitionConsumer.java From Flink-CEPplus with Apache License 2.0 | 4 votes |
@Override public Boolean call() throws Exception { try { while (true) { if (Thread.interrupted()) { throw new InterruptedException(); } synchronized (dataAvailableNotification) { while (!dataAvailableNotification.getAndSet(false)) { dataAvailableNotification.wait(); } } final BufferAndBacklog bufferAndBacklog = subpartitionView.getNextBuffer(); if (isSlowConsumer) { Thread.sleep(random.nextInt(MAX_SLEEP_TIME_MS + 1)); } if (bufferAndBacklog != null) { if (bufferAndBacklog.isMoreAvailable()) { dataAvailableNotification.set(true); } if (bufferAndBacklog.buffer().isBuffer()) { callback.onBuffer(bufferAndBacklog.buffer()); } else { final AbstractEvent event = EventSerializer.fromBuffer(bufferAndBacklog.buffer(), getClass().getClassLoader()); callback.onEvent(event); bufferAndBacklog.buffer().recycleBuffer(); if (event.getClass() == EndOfPartitionEvent.class) { subpartitionView.notifySubpartitionConsumed(); return true; } } } else if (subpartitionView.isReleased()) { return true; } } } finally { subpartitionView.releaseAllResources(); } }
Example 16
Source File: SingleInputGate.java From Flink-CEPplus with Apache License 2.0 | 4 votes |
private Optional<BufferOrEvent> getNextBufferOrEvent(boolean blocking) throws IOException, InterruptedException { if (hasReceivedAllEndOfPartitionEvents) { return Optional.empty(); } if (isReleased) { throw new IllegalStateException("Released"); } requestPartitions(); InputChannel currentChannel; boolean moreAvailable; Optional<BufferAndAvailability> result = Optional.empty(); do { synchronized (inputChannelsWithData) { while (inputChannelsWithData.size() == 0) { if (isReleased) { throw new IllegalStateException("Released"); } if (blocking) { inputChannelsWithData.wait(); } else { return Optional.empty(); } } currentChannel = inputChannelsWithData.remove(); enqueuedInputChannelsWithData.clear(currentChannel.getChannelIndex()); moreAvailable = !inputChannelsWithData.isEmpty(); } result = currentChannel.getNextBuffer(); } while (!result.isPresent()); // this channel was now removed from the non-empty channels queue // we re-add it in case it has more data, because in that case no "non-empty" notification // will come for that channel if (result.get().moreAvailable()) { queueChannel(currentChannel); moreAvailable = true; } final Buffer buffer = result.get().buffer(); if (buffer.isBuffer()) { return Optional.of(new BufferOrEvent(buffer, currentChannel.getChannelIndex(), moreAvailable)); } else { final AbstractEvent event = EventSerializer.fromBuffer(buffer, getClass().getClassLoader()); if (event.getClass() == EndOfPartitionEvent.class) { channelsWithEndOfPartitionEvents.set(currentChannel.getChannelIndex()); if (channelsWithEndOfPartitionEvents.cardinality() == numberOfInputChannels) { // Because of race condition between: // 1. releasing inputChannelsWithData lock in this method and reaching this place // 2. empty data notification that re-enqueues a channel // we can end up with moreAvailable flag set to true, while we expect no more data. checkState(!moreAvailable || !pollNextBufferOrEvent().isPresent()); moreAvailable = false; hasReceivedAllEndOfPartitionEvents = true; } currentChannel.notifySubpartitionConsumed(); currentChannel.releaseAllResources(); } return Optional.of(new BufferOrEvent(event, currentChannel.getChannelIndex(), moreAvailable)); } }
Example 17
Source File: TestSubpartitionConsumer.java From flink with Apache License 2.0 | 4 votes |
@Override public Boolean call() throws Exception { try { while (true) { if (Thread.interrupted()) { throw new InterruptedException(); } synchronized (dataAvailableNotification) { while (!dataAvailableNotification.getAndSet(false)) { dataAvailableNotification.wait(); } } final BufferAndBacklog bufferAndBacklog = subpartitionView.getNextBuffer(); if (isSlowConsumer) { Thread.sleep(random.nextInt(MAX_SLEEP_TIME_MS + 1)); } if (bufferAndBacklog != null) { if (bufferAndBacklog.isDataAvailable()) { dataAvailableNotification.set(true); } if (bufferAndBacklog.buffer().isBuffer()) { callback.onBuffer(bufferAndBacklog.buffer()); } else { final AbstractEvent event = EventSerializer.fromBuffer(bufferAndBacklog.buffer(), getClass().getClassLoader()); callback.onEvent(event); bufferAndBacklog.buffer().recycleBuffer(); if (event.getClass() == EndOfPartitionEvent.class) { subpartitionView.releaseAllResources(); return true; } } } else if (subpartitionView.isReleased()) { return true; } } } finally { subpartitionView.releaseAllResources(); } }