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; } } }
@Override public RotateEventData deserialize(ByteArrayInputStream inputStream) throws IOException { RotateEventData eventData = new RotateEventData(); eventData.setBinlogPosition(inputStream.readLong(8)); eventData.setBinlogFilename(inputStream.readString(inputStream.available())); return eventData; } }
RotateEventData eventData = event.getData(); if (eventData != null) { binlogFilename = eventData.getBinlogFilename();
RotateEventData eventData = event.getData(); if (eventData != null) { binlogFilename = eventData.getBinlogFilename();
currentBinlogFile = rotateEventData.getBinlogFilename(); currentBinlogPosition = rotateEventData.getBinlogPosition(); break; default:
rotateEventData = (RotateEventData) eventData; source.setBinlogStartPoint(rotateEventData.getBinlogFilename(), rotateEventData.getBinlogPosition()); } else if (eventHeader instanceof EventHeaderV4) { EventHeaderV4 trackableEventHeader = (EventHeaderV4) eventHeader;
currentBinlogFile = rotateEventData.getBinlogFilename(); currentBinlogPosition = rotateEventData.getBinlogPosition(); break; default: