public UpdateRowsEventData updateRowsData() { return (UpdateRowsEventData) event.getData(); }
public EventType getType() { return event.getHeader().getEventType(); }
private void notifyEventListeners(Event event) { if (event.getData() instanceof EventDataWrapper) { event = new Event(event.getHeader(), ((EventDataWrapper) event.getData()).getExternal()); } for (EventListener eventListener : eventListeners) { try { eventListener.onEvent(event); } catch (Exception e) { if (logger.isLoggable(Level.WARNING)) { logger.log(Level.WARNING, eventListener + " choked on " + event, e); } } } }
public Long getTableID() { EventData data = event.getData(); switch ( event.getHeader().getEventType() ) { case EXT_WRITE_ROWS: case WRITE_ROWS: return ((WriteRowsEventData) data).getTableId(); case EXT_UPDATE_ROWS: case UPDATE_ROWS: return ((UpdateRowsEventData) data).getTableId(); case EXT_DELETE_ROWS: case DELETE_ROWS: return ((DeleteRowsEventData) data).getTableId(); case TABLE_MAP: return ((TableMapEventData) data).getTableId(); } return null; }
/** * @return deserialized event or null in case of end-of-stream */ public Event nextEvent(ByteArrayInputStream inputStream) throws IOException { if (inputStream.peek() == -1) { return null; } EventHeader eventHeader = eventHeaderDeserializer.deserialize(inputStream); EventData eventData; switch (eventHeader.getEventType()) { case FORMAT_DESCRIPTION: eventData = deserializeFormatDescriptionEventData(inputStream, eventHeader); break; case TABLE_MAP: eventData = deserializeTableMapEventData(inputStream, eventHeader); break; default: EventDataDeserializer eventDataDeserializer = getEventDataDeserializer(eventHeader.getEventType()); eventData = deserializeEventData(inputStream, eventHeader, eventDataDeserializer); } return new Event(eventHeader, eventData); }
private void updateClientBinlogFilenameAndPosition(Event event) { EventHeader eventHeader = event.getHeader(); EventType eventType = eventHeader.getEventType(); if (eventType == EventType.ROTATE) { RotateEventData rotateEventData = (RotateEventData) EventDataWrapper.internal(event.getData()); binlogFilename = rotateEventData.getBinlogFilename(); binlogPosition = rotateEventData.getBinlogPosition(); } else // do not update binlogPosition on TABLE_MAP so that in case of reconnect (using a different instance of // client) table mapping cache could be reconstructed before hitting row mutation event if (eventType != EventType.TABLE_MAP && eventHeader instanceof EventHeaderV4) { EventHeaderV4 trackableEventHeader = (EventHeaderV4) eventHeader; long nextBinlogPosition = trackableEventHeader.getNextPosition(); if (nextBinlogPosition > 0) { binlogPosition = nextBinlogPosition; } } }
public DeleteRowsEventData deleteRowsData() { return (DeleteRowsEventData) event.getData(); }
@Override public void onEvent(Event event) { EventHeader header = event.getHeader(); lastEventHeader.set(header); timestampOfLastEvent.set(getCurrentTimeMillis()); totalNumberOfEventsSeen.getAndIncrement(); totalBytesReceived.getAndAdd(header.getHeaderLength() + header.getDataLength()); }
@Override public Event nextEvent(ByteArrayInputStream inputStream) throws IOException { try { // Delegate to the superclass ... Event event = super.nextEvent(inputStream); // We have to record the most recent TableMapEventData for each table number for our custom deserializers ... if (event.getHeader().getEventType() == EventType.TABLE_MAP) { TableMapEventData tableMapEvent = event.getData(); tableMapEventByTableId.put(tableMapEvent.getTableId(), tableMapEvent); } return event; } // DBZ-217 In case an event couldn't be read we create a pseudo-event for the sake of logging catch(EventDataDeserializationException edde) { EventHeaderV4 header = new EventHeaderV4(); header.setEventType(EventType.INCIDENT); header.setTimestamp(edde.getEventHeader().getTimestamp()); header.setServerId(edde.getEventHeader().getServerId()); if(edde.getEventHeader() instanceof EventHeaderV4) { header.setEventLength(((EventHeaderV4)edde.getEventHeader()).getEventLength()); header.setNextPosition(((EventHeaderV4)edde.getEventHeader()).getNextPosition()); header.setFlags(((EventHeaderV4)edde.getEventHeader()).getFlags()); } EventData data = new EventDataDeserializationExceptionData(edde); return new Event(header, data); } } };
private void processXidEvent(Event event) { EventHeaderV4 header = event.getHeader(); XidEventData data = event.getData(); String binlogFilename = binaryLogClient.getBinlogFilename(); Long position = header.getNextPosition(); Long xid = data.getXid(); BinlogPosition binlogPosition = new BinlogPosition(binlogFilename, position); transaction.setNextBinlogPosition(binlogPosition); transaction.setXid(xid); replicator.commit(transaction, true); transaction = new Transaction(config); }
public XidEventData xidData() { return (XidEventData) event.getData(); }
private void switchToBufferFullMode() { largeTxNotBufferedPosition = reader.getCurrentBinlogPosition(); LOGGER.info("Buffer full, will need to re-read part of the transaction from binlog from {}", largeTxNotBufferedPosition); reader.getMetrics().onLargeTransaction(); // Position for TABLE_MAP is not stored by com.github.shyiko.mysql.binlog.BinaryLogClient.updateClientBinlogFilenameAndPosition(Event) if (buffer.peek().getHeader().getEventType() == EventType.TABLE_MAP) { buffer.remove(); } }
EventHeader eventHeader = event.getHeader(); switch(eventHeader.getEventType()) { case GTID: GtidEventData gtidEventData = (GtidEventData) EventDataWrapper.internal(event.getData()); gtid = gtidEventData.getGtid(); break; break; case QUERY: QueryEventData queryEventData = (QueryEventData) EventDataWrapper.internal(event.getData()); String sql = queryEventData.getSql(); if (sql == null) {
public WriteRowsEventData writeRowsData() { return (WriteRowsEventData) event.getData(); }
public BinlogConnectorEvent(Event event, String filename, String gtidSetStr, String gtid, MaxwellOutputConfig outputConfig) { this.event = event; this.gtidSetStr = gtidSetStr; this.gtid = gtid; EventHeaderV4 hV4 = (EventHeaderV4) event.getHeader(); this.nextPosition = new BinlogPosition(gtidSetStr, gtid, hV4.getNextPosition(), filename); this.position = new BinlogPosition(gtidSetStr, gtid, hV4.getPosition(), filename); this.outputConfig = outputConfig; }
EventHeaderV4 header = event.getHeader(); long timestamp = header.getTimestamp(); EventType eventType = header.getEventType(); case TABLE_MAP: TableMapEventData data = event.getData(); QueryEventData queryEventData = event.getData(); currentDatabase = queryEventData.getDatabase(); || eventType == PRE_GA_WRITE_ROWS) { InsertRowsEventInfo eventInfo = new InsertRowsEventInfo(currentTable, timestamp, currentBinlogFile, currentBinlogPosition, event.getData()); currentSequenceId.set(insertRowsWriter.writeEvent(currentSession, transitUri, eventInfo, currentSequenceId.get(), REL_SUCCESS)); || eventType == PRE_GA_DELETE_ROWS) { DeleteRowsEventInfo eventInfo = new DeleteRowsEventInfo(currentTable, timestamp, currentBinlogFile, currentBinlogPosition, event.getData()); currentSequenceId.set(deleteRowsWriter.writeEvent(currentSession, transitUri, eventInfo, currentSequenceId.get(), REL_SUCCESS)); UpdateRowsEventInfo eventInfo = new UpdateRowsEventInfo(currentTable, timestamp, currentBinlogFile, currentBinlogPosition, event.getData()); currentSequenceId.set(updateRowsWriter.writeEvent(currentSession, transitUri, eventInfo, currentSequenceId.get(), REL_SUCCESS)); RotateEventData rotateEventData = event.getData(); currentBinlogFile = rotateEventData.getBinlogFilename(); currentBinlogPosition = rotateEventData.getBinlogPosition();
public QueryEventData queryData() { return (QueryEventData) event.getData(); }