.withTransport(new NettyTransport()) .withSerializer(RaftJournalSystem.createSerializer()) .withType(Type.PASSIVE) .withStorage(Storage.builder().withStorageLevel(StorageLevel.MEMORY).build()) .withStateMachine(() -> new EchoJournalStateMachine(lastUpdate)).build();
/** * Returns a new Raft server builder. * <p> * The provided {@link Address} is the address to which to bind the server being constructed. The provided set of * members will be used to connect to the other members in the Raft cluster. The local server {@link Address} does * not have to be present in the address list. * * @param type The server member type. * @param clientAddress The address through which clients connect to the server. * @param serverAddress The local server member address. * @param cluster The cluster members to which to connect. * @return The server builder. */ public static Builder builder(Member.Type type, Address clientAddress, Address serverAddress, Address... cluster) { return builder(clientAddress, serverAddress, Arrays.asList(cluster)).withType(type); }
/** * Returns a new Raft server builder. * <p> * The provided {@link Address} is the address to which to bind the server being constructed. The provided set of * members will be used to connect to the other members in the Raft cluster. The local server {@link Address} does * not have to be present in the address list. * * @param type The server member type. * @param address The address through which clients and servers connect to this server. * @param cluster The cluster members to which to connect. * @return The server builder. */ public static Builder builder(Member.Type type, Address address, Address... cluster) { return builder(address, address, Arrays.asList(cluster)).withType(type); }
/** * Builds a server for the replica. */ private ResourceServer buildServer() { // Construct the underlying CopycatServer. The server should have been configured with a CombinedTransport // that facilitates the local client connecting directly to the server. if (clientTransport != null) { serverBuilder.withClientTransport(new CombinedServerTransport(new LocalTransport(localRegistry), clientTransport)) .withServerTransport(serverTransport); } else { serverBuilder.withTransport(new CombinedServerTransport(new LocalTransport(localRegistry), serverTransport)); } // Set the server resource state machine. serverBuilder.withStateMachine(() -> new ResourceManagerState(registry)); // If the quorum hint is ALL then set the local member to ACTIVE. if (quorumHint == Quorum.ALL.size()) { serverBuilder.withType(Member.Type.ACTIVE); } CopycatServer server = serverBuilder.build(); server.serializer().resolve(new ResourceManagerTypeResolver(registry)); return new ResourceServer(server); }
/** * Creates a Copycat server. */ private CopycatServer createServer(Member member) { CopycatServer.Builder builder = CopycatServer.builder(member.clientAddress(), member.serverAddress()) .withType(member.type()) .withTransport(new NettyTransport()) .withStorage(Storage.builder() .withStorageLevel(StorageLevel.DISK) .withDirectory(new File(String.format("target/fuzz-logs/%d", member.address().hashCode()))) .withMaxSegmentSize(randomNumber(1024 * 1024 * 7) + (1024 * 1024)) .withMaxEntriesPerSegment(randomNumber(10000) + 1000) .withCompactionThreads(randomNumber(4) + 1) .withCompactionThreshold(Math.random() / (double) 2) .withEntryBufferSize(randomNumber(10000) + 1) .withFlushOnCommit(randomBoolean()) .withMinorCompactionInterval(Duration.ofSeconds(randomNumber(30) + 15)) .withMajorCompactionInterval(Duration.ofSeconds(randomNumber(60) + 60)) .build()) .withStateMachine(FuzzStateMachine::new); CopycatServer server = builder.build(); server.serializer().disableWhitelist(); servers.add(server); return server; }
/** * Returns a new Raft server builder. * <p> * The provided {@link Address} is the address to which to bind the server being constructed. The provided set of * members will be used to connect to the other members in the Raft cluster. The local server {@link Address} does * not have to be present in the address list. * * @param type The server member type. * @param clientAddress The address through which clients connect to the server. * @param serverAddress The local server member address. * @param cluster The cluster members to which to connect. * @return The server builder. */ public static Builder builder(Member.Type type, Address clientAddress, Address serverAddress, Collection<Address> cluster) { return new Builder(clientAddress, serverAddress, cluster).withType(type); }
/** * Returns a new Raft server builder. * <p> * The provided {@link Address} is the address to which to bind the server being constructed. The provided set of * members will be used to connect to the other members in the Raft cluster. The local server {@link Address} does * not have to be present in the address list. * * @param type The server member type. * @param address The address through which clients and servers connect to this server. * @param cluster The cluster members to which to connect. * @return The server builder. */ public static Builder builder(Member.Type type, Address address, Collection<Address> cluster) { return new Builder(address, address, cluster).withType(type); }
/** * Creates a Copycat server. */ private CopycatServer createServer(Member member) { CopycatServer.Builder builder = CopycatServer.builder(member.clientAddress(), member.serverAddress()) .withType(member.type()) .withTransport(new NettyTransport()) .withStorage(Storage.builder() .withStorageLevel(StorageLevel.DISK) .withDirectory(new File(String.format("target/performance-logs/%d", member.address().hashCode()))) .withCompactionThreads(1) .build()) .withStateMachine(PerformanceStateMachine::new); CopycatServer server = builder.build(); server.serializer().disableWhitelist(); servers.add(server); return server; }
/** * Creates a Copycat server. */ private CopycatServer createServer(Member member) { CopycatServer.Builder builder = CopycatServer.builder(member.clientAddress(), member.serverAddress()) .withType(member.type()) .withTransport(new LocalTransport(registry)) .withStorage(Storage.builder() .withStorageLevel(StorageLevel.MEMORY) .withMaxSegmentSize(1024 * 1024) .withCompactionThreads(1) .build()) .withStateMachine(TestStateMachine::new); CopycatServer server = builder.build(); server.serializer().disableWhitelist(); servers.add(server); return server; }