com.google.code.or..OpenReplicator.swp Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of open-replicator Show documentation
Show all versions of open-replicator Show documentation
Open Replicator is a high performance MySQL binlog parser written in Java.
b0VIM 7.4 ???V?ġ># ben alpha21 ~ben/src/open-replicator/src/main/java/com/google/code/or/OpenReplicator.java utf-8 3210 #"! U tp V ? W l
l ad B ? V ? ? m & ? ? Z W $ ! ?
?
I
? ? ? ? ? ? P O 2 ? ? ? ? u > ?
?
p
%
? ? d & ? ? f " ? ? X ? ? Y $ ? ? ? m C ? ? ? ? ? v c _ A = ! ? ? ? ? o I ? ? ? ? ? d . ? ? ? ? protected final AtomicBoolean running = new AtomicBoolean(false); protected BinlogEventListener binlogEventListener; protected ReplicationBasedBinlogParser binlogParser; protected Transport transport; // protected Float heartbeatPeriod = null; protected int socketReceiveBufferSize = 512 * 1024; protected int level2BufferSize = 8 * 1024 * 1024; protected int level1BufferSize = 1024 * 1024; protected String encoding = "utf-8"; protected long binlogPosition = 4; protected String binlogFileName; protected int serverId = 6789; protected String password; protected String user; protected String host; protected int port = 3306; // public class OpenReplicator { */ * @author darnaut * @author Jingqi Xu * /** import com.google.code.or.net.impl.packet.command.ComBinlogDumpPacket; import com.google.code.or.net.impl.packet.ErrorPacket; import com.google.code.or.net.impl.TransportImpl; import com.google.code.or.net.impl.Query; import com.google.code.or.net.impl.AuthenticatorImpl; import com.google.code.or.net.TransportException; import com.google.code.or.net.Transport; import com.google.code.or.net.Packet; import com.google.code.or.io.impl.SocketFactoryImpl; import com.google.code.or.common.glossary.column.StringColumn; import com.google.code.or.binlog.impl.parser.GtidEventParser; import com.google.code.or.binlog.impl.parser.XidEventParser; import com.google.code.or.binlog.impl.parser.WriteRowsEventV2Parser; import com.google.code.or.binlog.impl.parser.WriteRowsEventParser; import com.google.code.or.binlog.impl.parser.UserVarEventParser; import com.google.code.or.binlog.impl.parser.UpdateRowsEventV2Parser; import com.google.code.or.binlog.impl.parser.UpdateRowsEventParser; import com.google.code.or.binlog.impl.parser.TableMapEventParser; import com.google.code.or.binlog.impl.parser.StopEventParser; import com.google.code.or.binlog.impl.parser.RotateEventParser; import com.google.code.or.binlog.impl.parser.RandEventParser; import com.google.code.or.binlog.impl.parser.QueryEventParser; import com.google.code.or.binlog.impl.parser.IntvarEventParser; import com.google.code.or.binlog.impl.parser.IncidentEventParser; import com.google.code.or.binlog.impl.parser.FormatDescriptionEventParser; import com.google.code.or.binlog.impl.parser.DeleteRowsEventV2Parser; import com.google.code.or.binlog.impl.parser.DeleteRowsEventParser; import com.google.code.or.binlog.impl.ReplicationBasedBinlogParser; import com.google.code.or.binlog.BinlogParserListener; import com.google.code.or.binlog.BinlogParser; import com.google.code.or.binlog.BinlogEventListener; import org.slf4j.LoggerFactory; import org.slf4j.Logger; import java.math.BigInteger; import java.math.BigDecimal; import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.TimeUnit; import java.util.List; package com.google.code.or; */ * limitations under the License. * See the License for the specific language governing permissions and * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * distributed under the License is distributed on an "AS IS" BASIS, * Unless required by applicable law or agreed to in writing, software * * http://www.apache.org/licenses/LICENSE-2.0 * * the License. You may obtain a copy of the License at * (the "License"); you may not use this file except in compliance with * The ASF licenses this file to You under the Apache License, Version 2.0 * this work for additional information regarding copyright ownership. * contributor license agreements. See the NOTICE file distributed with * Licensed to the Apache Software Foundation (ASF) under one or more /** ad ? ?
? ? S # " ? ? ? ? ? } } return r; r.setTransport(this.transport); // r.registerEventParser(new GtidEventParser()); r.registerEventParser(new FormatDescriptionEventParser()); r.registerEventParser(new DeleteRowsEventV2Parser()); r.registerEventParser(new UpdateRowsEventV2Parser()); ad ? l ? ? ? ? c < 9 8 ? ? ? | { & ?
?
?
\
O
K
H
G
? ? ? ^ ] , ? ? ? ? ? ? ? k L I H % ?
?
?
?
?
?
?
?
?
?
`
[
? ? ? F
? ? ? ? V ? ? ? ? ? ? z J ? ? ? U 0 / * ? ? ? Y 4 ( % $ ? ? ~ N ? ? ? Z ' ? ? ? T ? ? r. r. r.registerEventParser(new WriteRowsEventV2Parser()); r.registerEventParser(new DeleteRowsEventParser()); r.registerEventParser(new UpdateRowsEventParser()); r.registerEventParser(new WriteRowsEventParser()); r.registerEventParser(new TableMapEventParser()); r.registerEventParser(new IncidentEventParser()); r.registerEventParser(new UserVarEventParser()); r.registerEventParser(new QueryEventParser()); r.registerEventParser(new RandEventParser()); r.registerEventParser(new XidEventParser()); r.registerEventParser(new IntvarEventParser()); r.registerEventParser(new RotateEventParser()); r.registerEventParser(new StopEventParser()); final ReplicationBasedBinlogParser r = new ReplicationBasedBinlogParser(); // protected ReplicationBasedBinlogParser getDefaultBinlogParser() throws Exception { } return r; r.setSocketFactory(socketFactory); socketFactory.setReceiveBufferSize(this.socketReceiveBufferSize); socketFactory.setTcpNoDelay(false); socketFactory.setKeepAlive(true); final SocketFactoryImpl socketFactory = new SocketFactoryImpl(); // r.setAuthenticator(authenticator); authenticator.setEncoding(this.encoding); authenticator.setPassword(this.password); authenticator.setUser(this.user); final AuthenticatorImpl authenticator = new AuthenticatorImpl(); // r.setLevel2BufferSize(this.level2BufferSize); r.setLevel1BufferSize(this.level1BufferSize); final TransportImpl r = new TransportImpl(); // protected Transport getDefaultTransport() throws Exception { } } throw new TransportException(error); final ErrorPacket error = ErrorPacket.valueOf(packet); if(packet.getPacketBody()[0] == ErrorPacket.PACKET_MARKER) { final Packet packet = this.transport.getInputStream().readPacket(); // this.transport.getOutputStream().flush(); this.transport.getOutputStream().writePacket(command); command.setBinlogFileName(StringColumn.valueOf(this.binlogFileName.getBytes(this.encoding))); command.setBinlogPosition(this.binlogPosition); command.setServerId(this.serverId); command.setBinlogFlag(0); final ComBinlogDumpPacket command = new ComBinlogDumpPacket(); // protected void dumpBinlog() throws Exception { */ * /** } return binlogParser.millisSinceLastEvent(); public Long millisSinceLastEvent() { } return binlogParser.getHeartbeatCount(); public long getHeartbeatCount() { } return this.heartbeatPeriod; public Float getHeartbeatPeriod() { } this.heartbeatPeriod = period; public void setHeartbeatPeriod(float period) { } query.getFirst("SET @master_heartbeat_period = " + nanoSeconds); final Query query = new Query(this.transport); BigInteger nanoSeconds = BigDecimal.valueOf(1000000000).multiply(BigDecimal.valueOf(this.heartbeatPeriod)).toBigInteger(); return; if ( this.heartbeatPeriod == null ) protected void setupHeartbeatPeriod() throws Exception { } } throw e; if ( e.getErrorCode() != 1193 ) // ignore no-such-variable errors on mysql 5.5 } catch ( TransportException e ) { } query.getFirst("SET @master_binlog_checksum = @@global.binlog_checksum"); if ( cols != null && cols.get(0).equals("CRC32") || cols.get(0).equals("NONE")) { List cols = query.getFirst("SELECT @@global.binlog_checksum"); try { final Query query = new Query(this.transport); protected void setupChecksumState() throws Exception { } this.binlogEventListener = listener; public void setBinlogEventListener(BinlogEventListener listener) { } return binlogEventListener; public BinlogEventListener getBinlogEventListener() { ad
? ? ? ? ? ? b _ ^ 6 1 ? ? ? ? ? v u p P ?
?
?
?
?
^
? ? ? ? ? ? ? @ ;
? ? ? ? ?
?
?
?
?
?
?
w
^
T
P
M
L
G
C
>
&
? ? ? ? ? ? ? ? ? t q p U F C B
? ? ? ? ? ? ? ? e R O N " ? ? ? ? ? ? ? ? c J G F ? ? ? ? ? ? ? j B ? > ? ? ? ? ? ? ? n S P O ? ? ? ? ? ? ? N ? ? ? ? ? x u t K 4 1 0 ? ? ? ? ? } this.binlogParser = parser; public void setBinlogParser(ReplicationBasedBinlogParser parser) { } return binlogParser; public BinlogParser getBinlogParser() { } this.transport = transport; public void setTransport(Transport transport) { } return transport; public Transport getTransport() { */ * /** } this.socketReceiveBufferSize = socketReceiveBufferSize; public void setSocketReceiveBufferSize(int socketReceiveBufferSize) { } return socketReceiveBufferSize; public int getSocketReceiveBufferSize() { } this.level2BufferSize = level2BufferSize; public void setLevel2BufferSize(int level2BufferSize) { } return level2BufferSize; public int getLevel2BufferSize() { } this.level1BufferSize = level1BufferSize; public void setLevel1BufferSize(int level1BufferSize) { } return level1BufferSize; public int getLevel1BufferSize() { } this.binlogFileName = binlogFileName; public void setBinlogFileName(String binlogFileName) { } return binlogFileName; public String getBinlogFileName() { } this.binlogPosition = binlogPosition; public void setBinlogPosition(long binlogPosition) { } return binlogPosition; public long getBinlogPosition() { } this.serverId = serverId; public void setServerId(int serverId) { } return serverId; public int getServerId() { } this.encoding = encoding; public void setEncoding(String encoding) { } return encoding; public String getEncoding() { } this.password = password; public void setPassword(String password) { } return password; public String getPassword() { } this.user = user; public void setUser(String user) { } return user; public String getUser() { } this.host = host; public void setHost(String host) { } return host; public String getHost() { } this.port = port; public void setPort(int port) { } return port; public int getPort() { */ * /** } } // NOP } catch(Exception e) { stop(timeout, unit); try { public void stopQuietly(long timeout, TimeUnit unit) { } this.binlogParser.stop(timeout, unit); this.transport.disconnect(); // last event, and doesn't have any timeouts. so we deal with the EOF exception thrown elsewhere in the code. // disconnect the transport first: seems kinda wrong, but the parser thread can be blocked waiting for the } return; if(!this.running.compareAndSet(true, false)) { // public void stop(long timeout, TimeUnit unit) throws Exception { } this.binlogParser.start(); }); } stopQuietly(0, TimeUnit.MILLISECONDS); public void onStop(BinlogParser parser) { @Override this.binlogParser.addParserListener(new BinlogParserListener.Adapter() { this.binlogParser.setEventListener(this.binlogEventListener); this.binlogParser.setBinlogFileName(this.binlogFileName); dumpBinlog(); setupHeartbeatPeriod(); setupChecksumState(); this.binlogParser = getDefaultBinlogParser(); if(this.binlogParser == null) // this.transport.connect(this.host, this.port); if(this.transport == null) this.transport = getDefaultTransport(); // } return; if(!this.running.compareAndSet(false, true)) { // public void start() throws Exception { } return this.running.get(); public boolean isRunning() { */ * /** private static final Logger LOGGER = LoggerFactory.getLogger(OpenReplicator.class);