List of usage examples for org.apache.zookeeper.server.quorum.flexible QuorumMaj QuorumMaj
public QuorumMaj(Properties props) throws ConfigException
From source file:com.linkedin.d2.quorum.ZKPeer.java
License:Apache License
public void setQuorumPeer(int peersCount, Map<Long, QuorumServer> peersView, FileTxnSnapLog fts) throws IOException { NIOServerCnxn.Factory cnxnFactory = new NIOServerCnxn.Factory( new InetSocketAddress("127.0.0.1", _clientPort), _maxClientCnxns); _peer = new QuorumPeer(); _peer.setClientPortAddress(new InetSocketAddress("127.0.0.1", _clientPort)); _peer.setTxnFactory(fts);// w w w. j av a 2s .co m _peer.setQuorumPeers(peersView); _peer.setElectionType(_electionAlg); _peer.setMyid(_id); _peer.setTickTime(_tickTime); _peer.setMinSessionTimeout(_minSessionTimeout); _peer.setMaxSessionTimeout(_maxSessionTimeout); _peer.setInitLimit(_initLimit); _peer.setSyncLimit(_syncLimit); _peer.setQuorumVerifier(new QuorumMaj(peersCount)); _peer.setCnxnFactory(cnxnFactory); _peer.setZKDatabase(new ZKDatabase(_peer.getTxnFactory())); _peer.setPeerType(LearnerType.PARTICIPANT); }
From source file:com.netflix.curator.utils.TestingCluster.java
License:Apache License
/** * Start the ensemble. The cluster must be started before use. * * @throws Exception errors/*from w ww.j av a 2 s .com*/ */ public void start() throws Exception { final Map<QuorumPeerEntry, QuorumPeer.QuorumServer> serverMap = Maps.newHashMap(); final Map<Long, QuorumPeer.QuorumServer> testingServers = Maps.newHashMap(); for (final QuorumPeerEntry entry : entries) { InetSocketAddress address = new InetSocketAddress("localhost", entry.instanceSpec.quorumPort); InetSocketAddress electionAddress = new InetSocketAddress("localhost", entry.instanceSpec.electionPort); long serverId = serverMap.size() + 1; QuorumPeer.QuorumServer quorumServer = new QuorumPeer.QuorumServer(serverId, address, electionAddress); serverMap.put(entry, quorumServer); testingServers.put(serverId, quorumServer); } final QuorumVerifier testingQuorumVerifier = new QuorumMaj(testingServers.size()); for (final QuorumPeerEntry entry : entries) { final long thisServerId = serverMap.get(entry).id; final String path = entry.instanceSpec.dataDirectory.getCanonicalPath(); final InetSocketAddress clientPort = new InetSocketAddress(entry.instanceSpec.port); final QuorumPeerConfig config = new QuorumPeerConfig() { @Override public String getDataDir() { return path; } @Override public QuorumVerifier getQuorumVerifier() { return testingQuorumVerifier; } @Override public InetSocketAddress getClientPortAddress() { return clientPort; } @Override public int getElectionPort() { return entry.instanceSpec.electionPort; } @Override public String getDataLogDir() { return path; } @Override public int getTickTime() { return 2000; } @Override public long getServerId() { return thisServerId; } @Override public Map<Long, QuorumPeer.QuorumServer> getServers() { return testingServers; } @Override public int getSyncLimit() { return 5; } @Override public int getInitLimit() { return 10; } }; executorService.submit(new Callable<Void>() { @Override public Void call() throws Exception { try { entry.quorumPeerMain.runFromConfig(config); } catch (Throwable e) { e.printStackTrace(); throw new IOException(e); } return null; } }); } }
From source file:org.apache.curator.framework.imps.EnsembleTracker.java
License:Apache License
private void processConfigData(byte[] data) throws Exception { Properties properties = new Properties(); properties.load(new ByteArrayInputStream(data)); log.info("New config event received: {}", properties); if (!properties.isEmpty()) { QuorumMaj newConfig = new QuorumMaj(properties); String connectionString = configToConnectionString(newConfig); if (connectionString.trim().length() > 0) { currentConfig.set(newConfig); ensembleProvider.setConnectionString(connectionString); } else {// w w w. j a va2 s . co m log.error("Invalid config event received: {}", properties); } } else { log.debug("Ignoring new config as it is empty"); } }
From source file:org.apache.curator.framework.imps.TestReconfiguration.java
License:Apache License
private static QuorumVerifier toQuorumVerifier(byte[] bytes) throws Exception { Assert.assertNotNull(bytes);/*from ww w . ja v a 2 s. co m*/ Properties properties = new Properties(); properties.load(new ByteArrayInputStream(bytes)); return new QuorumMaj(properties); }
From source file:org.apache.solr.cloud.SolrZkServer.java
License:Apache License
/** * Parse config from a Properties.// ww w . j a v a2 s. co m * @param zkProp Properties to parse from. */ @Override public void parseProperties(Properties zkProp) throws IOException, ConfigException { for (Entry<Object, Object> entry : zkProp.entrySet()) { String key = entry.getKey().toString().trim(); String value = entry.getValue().toString().trim(); if (key.equals("dataDir")) { dataDir = value; } else if (key.equals("dataLogDir")) { dataLogDir = value; } else if (key.equals("clientPort")) { setClientPort(Integer.parseInt(value)); } else if (key.equals("tickTime")) { tickTime = Integer.parseInt(value); } else if (key.equals("initLimit")) { initLimit = Integer.parseInt(value); } else if (key.equals("syncLimit")) { syncLimit = Integer.parseInt(value); } else if (key.equals("electionAlg")) { electionAlg = Integer.parseInt(value); } else if (key.equals("maxClientCnxns")) { maxClientCnxns = Integer.parseInt(value); } else if (key.startsWith("server.")) { int dot = key.indexOf('.'); long sid = Long.parseLong(key.substring(dot + 1)); String parts[] = value.split(":"); if ((parts.length != 2) && (parts.length != 3)) { LOG.error(value + " does not have the form host:port or host:port:port"); } InetSocketAddress addr = new InetSocketAddress(parts[0], Integer.parseInt(parts[1])); if (parts.length == 2) { servers.put(Long.valueOf(sid), new QuorumPeer.QuorumServer(sid, addr)); } else if (parts.length == 3) { InetSocketAddress electionAddr = new InetSocketAddress(parts[0], Integer.parseInt(parts[2])); servers.put(Long.valueOf(sid), new QuorumPeer.QuorumServer(sid, addr, electionAddr)); } } else if (key.startsWith("group")) { int dot = key.indexOf('.'); long gid = Long.parseLong(key.substring(dot + 1)); numGroups++; String parts[] = value.split(":"); for (String s : parts) { long sid = Long.parseLong(s); if (serverGroup.containsKey(sid)) throw new ConfigException("Server " + sid + "is in multiple groups"); else serverGroup.put(sid, gid); } } else if (key.startsWith("weight")) { int dot = key.indexOf('.'); long sid = Long.parseLong(key.substring(dot + 1)); serverWeight.put(sid, Long.parseLong(value)); } else { System.setProperty("zookeeper." + key, value); } } if (dataDir == null) { throw new IllegalArgumentException("dataDir is not set"); } if (dataLogDir == null) { dataLogDir = dataDir; } else { if (!new File(dataLogDir).isDirectory()) { throw new IllegalArgumentException("dataLogDir " + dataLogDir + " is missing."); } } if (tickTime == 0) { throw new IllegalArgumentException("tickTime is not set"); } if (servers.size() > 1) { if (initLimit == 0) { throw new IllegalArgumentException("initLimit is not set"); } if (syncLimit == 0) { throw new IllegalArgumentException("syncLimit is not set"); } /* * If using FLE, then every server requires a separate election * port. */ if (electionAlg != 0) { for (QuorumPeer.QuorumServer s : servers.values()) { if (s.electionAddr == null) throw new IllegalArgumentException("Missing election port for server: " + s.id); } } /* * Default of quorum config is majority */ if (serverGroup.size() > 0) { if (servers.size() != serverGroup.size()) throw new ConfigException("Every server must be in exactly one group"); /* * The deafult weight of a server is 1 */ for (QuorumPeer.QuorumServer s : servers.values()) { if (!serverWeight.containsKey(s.id)) serverWeight.put(s.id, (long) 1); } /* * Set the quorumVerifier to be QuorumHierarchical */ quorumVerifier = new QuorumHierarchical(numGroups, serverWeight, serverGroup); } else { /* * The default QuorumVerifier is QuorumMaj */ LOG.info("Defaulting to majority quorums"); quorumVerifier = new QuorumMaj(servers.size()); } File myIdFile = new File(dataDir, "myid"); if (!myIdFile.exists()) { ///////////////// ADDED FOR SOLR ////// Long myid = getMyServerId(); if (myid != null) { serverId = myid; return; } if (zkRun == null) return; //////////////// END ADDED FOR SOLR ////// throw new IllegalArgumentException(myIdFile.toString() + " file is missing"); } BufferedReader br = new BufferedReader( new InputStreamReader(new FileInputStream(myIdFile), IOUtils.CHARSET_UTF_8)); String myIdString; try { myIdString = br.readLine(); } finally { br.close(); } try { serverId = Long.parseLong(myIdString); } catch (NumberFormatException e) { throw new IllegalArgumentException("serverid " + myIdString + " is not a number"); } } }