public void restart(int siteId) throws Exception { EnvironmentConfig ec = makeBasicConfig(); int p = config.getMyPort(siteId); ReplicationManagerSiteConfig dbsite = new ReplicationManagerSiteConfig("localhost", p); dbsite.setLocalSite(true); dbsite.setLegacy(true); ec.addReplicationManagerSite(dbsite); p = config.getOtherPort(siteId); dbsite = new ReplicationManagerSiteConfig("localhost", p); dbsite.setLegacy(true); ec.addReplicationManagerSite(dbsite); MyEventHandler monitor = new MyEventHandler(); ec.setEventHandler(monitor); File clientDir = new File(config.getBaseDir(), "dir" + siteId); assertTrue(clientDir.exists()); Environment client = new Environment(clientDir, ec); client.setReplicationConfig(ReplicationConfig.STRICT_2SITE, false); envs[siteId] = client; monitors[siteId] = monitor; // we want to make sure we don't retry from here after the // initial failure, because we want to make the old master // connect to us. client.setReplicationTimeout(ReplicationTimeoutType.CONNECTION_RETRY, Integer.MAX_VALUE); client.replicationManagerStart(3, ReplicationManagerStartPolicy.REP_CLIENT); }
public void joinExistingClient(int site, boolean useHB) throws Exception { EnvironmentConfig ec = makeBasicConfig(); int p = config.getMyPort(site); ReplicationManagerSiteConfig dbsite = new ReplicationManagerSiteConfig("localhost", p); dbsite.setLocalSite(true); dbsite.setLegacy(true); ec.addReplicationManagerSite(dbsite); p = config.getOtherPort(site); dbsite = new ReplicationManagerSiteConfig("localhost", p); dbsite.setLegacy(true); ec.addReplicationManagerSite(dbsite); MyEventHandler monitor = new MyEventHandler(); monitors[site] = monitor; ec.setEventHandler(monitor); File clientDir = new File(config.getBaseDir(), "dir" + site); assertTrue(clientDir.exists()); Environment client = new Environment(clientDir, ec); client.setReplicationConfig(ReplicationConfig.STRICT_2SITE, false); if (useHB) { client.setReplicationTimeout(ReplicationTimeoutType.HEARTBEAT_SEND, 3000000); client.setReplicationTimeout(ReplicationTimeoutType.HEARTBEAT_MONITOR, 6000000); } envs[site] = client; client.setReplicationTimeout(ReplicationTimeoutType.CONNECTION_RETRY, 1000000); // be impatient client.replicationManagerStart(3, ReplicationManagerStartPolicy.REP_CLIENT); monitor.await(); assertTrue(client.getReplicationStats(StatsConfig.DEFAULT).getStartupComplete()); }
public void verifyConnect(int site) throws Exception { int port = config.getOtherPort(site); int pollLimit = 10; for (int i = 0; i < pollLimit; i++) { ReplicationManagerSiteInfo[] si = envs[site].getReplicationManagerSiteList(); ReplicationManagerSiteInfo inf = null; for (ReplicationManagerSiteInfo in : si) { ReplicationHostAddress addr = in.addr; if (addr.port == port) { inf = in; break; } } assertNotNull("other port not in site list", inf); if (inf.getConnectionStatus() == ReplicationManagerConnectionStatus.CONNECTED) { return; } Thread.sleep(1000); } fail("was not connected to remote site within " + pollLimit + " seconds"); }