package com.jivesoftware.os.amza.sync.deployable;
import com.jivesoftware.os.amza.api.partition.PartitionProperties;
import com.jivesoftware.os.amza.client.http.AmzaClientProvider;
import com.jivesoftware.os.amza.client.collection.AmzaMarshaller;
import com.jivesoftware.os.amza.sync.api.AmzaPartitionedConfigStorage;
import com.jivesoftware.os.amza.sync.api.AmzaSyncPartitionConfig;
import com.jivesoftware.os.amza.sync.api.AmzaSyncPartitionTuple;
/**
*
*/
public class AmzaSyncPartitionConfigStorage extends AmzaPartitionedConfigStorage<AmzaSyncPartitionTuple, AmzaSyncPartitionConfig> implements
AmzaSyncPartitionConfigProvider {
public AmzaSyncPartitionConfigStorage(AmzaClientProvider clientProvider,
String partitionName,
PartitionProperties partitionProperties,
AmzaMarshaller<AmzaSyncPartitionTuple> keyMarshaller,
AmzaMarshaller<AmzaSyncPartitionConfig> valueMarshaller) {
super(clientProvider, partitionName, partitionProperties, keyMarshaller, valueMarshaller);
}
/*
private static final MetricLogger LOG = MetricLoggerFactory.getLogger();
private final ObjectMapper mapper;
private final BAInterner interner;
private final AmzaClientProvider<HttpClient, HttpClientException> clientProvider;
private final PartitionProperties partitionProperties;
private final long additionalSolverAfterNMillis = 1_000; //TODO expose to conf?
private final long abandonLeaderSolutionAfterNMillis = 5_000; //TODO expose to conf?
private final long abandonSolutionAfterNMillis = 30_000; //TODO expose to conf?
public AmzaSyncPartitionConfigStorage(BAInterner interner,
ObjectMapper mapper,
TenantAwareHttpClient<String> httpClient,
long awaitLeaderElectionForNMillis) {
this.interner = interner;
this.mapper = mapper;
this.clientProvider = new AmzaClientProvider<>(
new HttpPartitionClientFactory(this.interner),
new HttpPartitionHostsProvider(this.interner, httpClient, mapper),
new RingHostHttpClientProvider(httpClient),
Executors.newCachedThreadPool(), //TODO expose to conf?
awaitLeaderElectionForNMillis,
-1,
-1);
partitionProperties = new PartitionProperties(Durability.fsync_async,
0, 0, 0, 0, 0, 0, 0, 0,
false,
Consistency.leader_quorum,
true,
true,
false,
RowType.snappy_primary,
"lab",
-1,
null,
-1,
-1);
}
private PartitionName partitionName(String senderName) {
byte[] nameAsBytes = ("amza-sync-partitions-config-" + senderName).getBytes(StandardCharsets.UTF_8);
return new PartitionName(false, nameAsBytes, nameAsBytes);
}*/
}