@Override public String getBinlogFilename() { return this.client.getBinlogFilename(); }
private void logReaderState(Level severity) { final Object position = client == null ? "N/A" : client.getBinlogFilename() + "/" + client.getBinlogPosition(); final String message = "Error during binlog processing. Last offset stored = {}, binlog reader near position = {}"; switch (severity) { case WARN: logger.warn(message, lastOffset, position); break; case DEBUG: logger.debug(message, lastOffset, position); break; default: logger.error(message, lastOffset, position); } }
@Override public void onEvent(Event event) { while (!stopNow.get()) { RawBinlogEvent ep = new RawBinlogEvent(event, client.getBinlogFilename()); try { if (queue.offer(ep, QUEUE_OFFER_TIMEOUT_MSEC, TimeUnit.MILLISECONDS)) { return; } else { throw new RuntimeException("Unable to add event to the queue"); } } catch (InterruptedException e) { throw new RuntimeException("Interrupted while adding event to the queue"); } } } }
public BinlogPosition getCurrentBinlogPosition() { return new BinlogPosition(client.getBinlogFilename(), client.getBinlogPosition()); } }
BinlogConnectorEvent ep = new BinlogConnectorEvent(event, client.getBinlogFilename(), client.getGtidSet(), gtid, outputConfig);
private void ensureReplicatorThread() throws Exception { checkCommErrors(); if ( !client.isConnected() && !stopOnEOF ) { if (this.gtidPositioning) { // When using gtid positioning, reconnecting should take us to the top // of the gtid event. We throw away any binlog position we have // (other than GTID) and bail out of getTransactionRows() LOGGER.warn("replicator stopped at position: {} -- restarting", client.getGtidSet()); client.setBinlogFilename(""); client.setBinlogPosition(4L); client.connect(5000); throw new ClientReconnectedException(); } else { // standard binlog positioning is a lot easier; we can really reconnect anywhere // we like, so we don't have to bail out of the middle of an event. LOGGER.warn("replicator stopped at position: {} -- restarting", client.getBinlogFilename() + ":" + client.getBinlogPosition()); client.connect(5000); } } }
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); }
@Override public void onEvent(Event event) { while (!stopNow.get()) { RawBinlogEvent ep = new RawBinlogEvent(event, client.getBinlogFilename()); try { if (queue.offer(ep, QUEUE_OFFER_TIMEOUT_MSEC, TimeUnit.MILLISECONDS)) { return; } else { throw new RuntimeException("Unable to add event to the queue"); } } catch (InterruptedException e) { throw new RuntimeException("Interrupted while adding event to the queue"); } } } }