Skip to content

Commit c0ca785

Browse files
author
Myron Scott
committed
Simplify and synchronized the way config is updated or checked
1 parent 0786582 commit c0ca785

File tree

9 files changed

+329
-95
lines changed

9 files changed

+329
-95
lines changed

tc-server/src/main/java/com/tc/config/ServerConfigurationManager.java

Lines changed: 290 additions & 48 deletions
Large diffs are not rendered by default.

tc-server/src/main/java/com/tc/l2/ha/L2HACoordinator.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@
2323
import com.tc.l2.api.L2Coordinator;
2424
import com.tc.l2.api.ReplicatedClusterStateManager;
2525
import com.tc.l2.state.ConsistencyManager;
26-
import com.tc.l2.state.ServerMode;
2726
import com.tc.l2.state.StateManager;
2827
import com.tc.net.NodeID;
2928
import com.tc.net.groups.AbstractGroupMessage;
@@ -103,12 +102,12 @@ public void connectionIDDestroyed(ConnectionID connectionID) {
103102

104103
@Override
105104
public void start() {
106-
if (this.server.getConfigSetupManager().getConfiguration().isPartialConfiguration()) {
105+
if (this.server.getConfigSetupManager().isPartialConfiguration()) {
107106
this.stateManager.moveToDiagnosticMode();
108107
consoleLogger.info("Started the server in diagnostic mode");
109-
} else if (this.server.getConfigSetupManager().getConfiguration().isRelaySource()) {
108+
} else if (this.server.getConfigSetupManager().isRelaySource()) {
110109
this.stateManager.moveToRelayMode();
111-
} else if (this.server.getConfigSetupManager().getConfiguration().isRelayDestination()) {
110+
} else if (this.server.getConfigSetupManager().isRelayDestination()) {
112111
this.stateManager.moveToRelayMode();
113112
}
114113
this.stateManager.initializeAndStartElection();

tc-server/src/main/java/com/tc/l2/ha/TopologyWeightGenerator.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,24 +17,24 @@
1717
*/
1818
package com.tc.l2.ha;
1919

20+
import com.tc.config.ServerConfigurationManager;
2021
import com.tc.l2.ha.WeightGeneratorFactory.WeightGenerator;
21-
import org.terracotta.configuration.Configuration;
2222

2323

2424
public class TopologyWeightGenerator implements WeightGenerator {
2525

26-
private final Configuration configuration;
26+
private final ServerConfigurationManager configuration;
2727
private final int initialSize;
2828

29-
public TopologyWeightGenerator(Configuration config) {
29+
public TopologyWeightGenerator(ServerConfigurationManager config) {
3030
this.configuration = config;
31-
this.initialSize = config.getServerConfigurations().size();
31+
this.initialSize = config.getGroupConfiguration().getNodes().size();
3232
}
3333

3434
@Override
3535
public long getWeight() {
3636
try {
37-
return configuration.getServerConfigurations().size();
37+
return configuration.getGroupConfiguration().getNodes().size();
3838
} catch (Throwable t) {
3939
return initialSize;
4040
}

tc-server/src/main/java/com/tc/net/groups/TCGroupManagerImpl.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -167,9 +167,9 @@ public TCGroupManagerImpl(ServerConfigurationManager configSetupManager, Connect
167167
this.thisNodeID = thisNodeID;
168168
this.bufferManagerFactory = bufferManagerFactory;
169169
this.version = configSetupManager.getProductInfo().version();
170-
this.relayLocation = configSetupManager.getConfiguration().getRelayPeer();
170+
this.relayLocation = configSetupManager.getRelayPeer();
171171
this.configuredNodes = ()-> {
172-
if (configSetupManager.getConfiguration().isRelayDestination()) {
172+
if (configSetupManager.isRelayDestination()) {
173173
return configSetupManager.getGroupConfiguration().directConnect(relayLocation).getNodes();
174174
} else {
175175
return configSetupManager.getGroupConfiguration().getNodes();

tc-server/src/main/java/com/tc/objectserver/impl/DistributedObjectServer.java

Lines changed: 17 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -316,8 +316,7 @@ public DistributedObjectServer(ServerConfigurationManager configSetupManager, TC
316316
this.serverBuilder = createServerBuilder(configSetupManager.getGroupConfiguration(), logger, server);
317317
this.serviceRegistry = new TerracottaServiceProviderRegistryImpl();
318318
this.topologyManager = new TopologyManager(()->this.configSetupManager.getGroupConfiguration().getHostPorts(), ()-> {
319-
Configuration config = this.configSetupManager.getConfiguration();
320-
FailoverBehavior consistent = config.getFailoverPriority();
319+
FailoverBehavior consistent = this.configSetupManager.getFailoverPriority();
321320
if (this.configSetupManager.isPartialConfiguration() || consistent == null || consistent.isAvailability()) {
322321
return -1;
323322
} else {
@@ -484,10 +483,9 @@ public synchronized void bootstrap() throws IOException, LocationNotCreatedExcep
484483
this.sampledCounterManager = new CounterManagerImpl();
485484

486485
// Set up the ServiceRegistry.
487-
Configuration configuration = this.configSetupManager.getConfiguration();
488486
PlatformConfiguration platformConfiguration =
489-
new PlatformConfigurationImpl(configSetupManager.getServerConfiguration(), configuration);
490-
serviceRegistry.initialize(platformConfiguration, configuration);
487+
new PlatformConfigurationImpl(configSetupManager);
488+
serviceRegistry.initialize(platformConfiguration, configSetupManager);
491489
serviceRegistry.registerImplementationProvided(new PlatformServiceProvider(server));
492490

493491
final EntityMessengerProvider messengerProvider = new EntityMessengerProvider();
@@ -526,7 +524,7 @@ public synchronized void bootstrap() throws IOException, LocationNotCreatedExcep
526524
}
527525
}
528526

529-
if (configuration.isPartialConfiguration() || configuration.isRelaySource()) {
527+
if (configSetupManager.isPartialConfiguration() || configSetupManager.isRelaySource()) {
530528
// don't persist anything for partial configurations
531529
persistor = new NullPersistor();
532530
} else {
@@ -587,7 +585,7 @@ public synchronized void bootstrap() throws IOException, LocationNotCreatedExcep
587585
ClientStatePersistor clientStateStore = this.persistor.getClientStatePersistor();
588586
this.connectionIdFactory = new ConnectionIDFactoryImpl(infoConnections, clientStateStore, capablities);
589587
int voteCount =
590-
ConsistencyManager.parseVoteCount(configuration.getFailoverPriority(), configuration.getServerConfigurations().size());
588+
ConsistencyManager.parseVoteCount(configSetupManager.getFailoverPriority(), configSetupManager.getGroupConfiguration().getNodes().size());
591589
int knownPeers = this.configSetupManager.allCurrentlyKnownServers().length - 1;
592590

593591
if (voteCount >= 0 && (voteCount + knownPeers + 1) % 2 == 0) {
@@ -615,9 +613,9 @@ public synchronized void bootstrap() throws IOException, LocationNotCreatedExcep
615613
final DSOChannelManager channelManager = new DSOChannelManagerImpl(this.l1Listener.getChannelManager(), pInfo.version());
616614
channelManager.addEventListener(this.connectionIdFactory);
617615

618-
ServerPersistentState serverPersistentState = configuration.isRelaySource() ? new RelayPersistentState() : new ClusterPersistentState(this.persistor.getClusterStatePersistor());
616+
ServerPersistentState serverPersistentState = configSetupManager.isRelaySource() ? new RelayPersistentState() : new ClusterPersistentState(this.persistor.getClusterStatePersistor());
619617

620-
if (serverPersistentState.getInitialMode() == ServerMode.ACTIVE && configuration.isRelayDestination()) {
618+
if (serverPersistentState.getInitialMode() == ServerMode.ACTIVE && configSetupManager.isRelayDestination()) {
621619
throw new TCShutdownServerException("Unable to start as a relay destination. The server was shutdown as active");
622620
}
623621

@@ -641,7 +639,7 @@ public synchronized void bootstrap() throws IOException, LocationNotCreatedExcep
641639
final InitialStateWeightGenerator initialState = new InitialStateWeightGenerator(serverPersistentState);
642640
weightGeneratorFactory.add(initialState);
643641
// 5) Topology weight is the number nodes this stripe believes are in the cluster
644-
final TopologyWeightGenerator topoWeight = new TopologyWeightGenerator(this.configSetupManager.getConfiguration());
642+
final TopologyWeightGenerator topoWeight = new TopologyWeightGenerator(this.configSetupManager);
645643
weightGeneratorFactory.add(topoWeight);
646644
// 6) SequenceID weight is the number of replication activities handled by this passive server
647645
final SequenceIDWeightGenerator sequenceWeight = new SequenceIDWeightGenerator();
@@ -721,7 +719,7 @@ public synchronized void bootstrap() throws IOException, LocationNotCreatedExcep
721719
HASettingsChecker haChecker = new HASettingsChecker(configSetupManager, tcProperties);
722720
haChecker.validateHealthCheckSettingsForHighAvailability();
723721

724-
StateManager state = new StateManagerImpl(consoleLogger, (n)->!configuration.isRelayDestination(), this.groupCommManager,
722+
StateManager state = new StateManagerImpl(consoleLogger, (n)->!configSetupManager.isRelayDestination(), this.groupCommManager,
725723
createStageController(processTransactionHandler), eventCollector, stageManager,
726724
configSetupManager.getGroupConfiguration().getNodes().size(),
727725
configSetupManager.getGroupConfiguration().getElectionTimeInSecs(),
@@ -733,13 +731,13 @@ public synchronized void bootstrap() throws IOException, LocationNotCreatedExcep
733731
new GenericHandler<>(), 1);
734732
// routing for passive to receive replication
735733
EventHandler<ReplicationMessage> replicationEvents = null;
736-
if (configSetupManager.getConfiguration().isRelaySource()) {
734+
if (configSetupManager.isRelaySource()) {
737735
replicationEvents = createAndRouteRelayTransactionHandler(replicationResponseStage);
738736
} else {
739737
ReplicatedTransactionHandler replicatedTransactionHandler = new ReplicatedTransactionHandler(state, replicationResponseStage, this.persistor, entityManager, groupCommManager);
740738
sequenceWeight.setReplicatedTransactionHandler(replicatedTransactionHandler);
741739
replicationEvents = replicatedTransactionHandler.getEventHandler();
742-
routeRelayMessages(state, configSetupManager.getConfiguration());
740+
routeRelayMessages(state, configSetupManager);
743741
}
744742

745743
// This requires both the stage for handling the replication/sync messages.
@@ -854,12 +852,11 @@ connectionPolicy, getOperationGuardian(platformServiceRegistry,
854852
}
855853

856854
public synchronized void openNetworkPorts() throws ConfigurationException {
857-
Configuration configuration = this.configSetupManager.getConfiguration();
858855
// don't join the group if the configuration is not complete
859856
if (this.l2Coordinator == null) {
860857
throw new IllegalStateException("server is not bootstrapped");
861858
}
862-
if (!configuration.isPartialConfiguration()) {
859+
if (!configSetupManager.isPartialConfiguration()) {
863860
startGroupManagers();
864861
}
865862
this.l2Coordinator.start();
@@ -938,7 +935,7 @@ private ConsistencyManager createConsistencyManager(ServerConfigurationManager c
938935
return new DiagnosticModeConsistencyManager();
939936
}
940937

941-
boolean consistentStartup = knownPeers > 0 && (configSetupManager.getConfiguration().isConsistentStartup() || voteCount >= 0);
938+
boolean consistentStartup = knownPeers > 0 && (configSetupManager.isConsistentStartup() || voteCount >= 0);
942939
return new SafeStartupManagerImpl(
943940
consistentStartup,
944941
knownPeers,
@@ -1179,10 +1176,9 @@ private void startGroupManagers() {
11791176
throw new IllegalStateException("server is not bootstrapped");
11801177
}
11811178
NodeID myNodeId;
1182-
Configuration config = this.configSetupManager.getConfiguration();
1183-
if (config.isRelayDestination()) {
1184-
consoleLogger.info("connectiong to {} for duplication", config.getRelayPeer());
1185-
myNodeId = this.groupCommManager.join(this.configSetupManager.getGroupConfiguration().directConnect(config.getRelayPeer()));
1179+
if (configSetupManager.isRelayDestination()) {
1180+
consoleLogger.info("connectiong to {} for duplication", configSetupManager.getRelayPeer());
1181+
myNodeId = this.groupCommManager.join(this.configSetupManager.getGroupConfiguration().directConnect(configSetupManager.getRelayPeer()));
11861182
} else {
11871183
myNodeId = this.groupCommManager.join(this.configSetupManager.getGroupConfiguration());
11881184
}
@@ -1421,7 +1417,7 @@ public void handleEvent(RelayMessage context) throws EventHandlerException {
14211417
return handler.getEventHandler();
14221418
}
14231419

1424-
private void routeRelayMessages(StateManager stateMgr, Configuration config) {
1420+
private void routeRelayMessages(StateManager stateMgr, ServerConfigurationManager config) {
14251421
DuplicationTransactionHandler handler = new DuplicationTransactionHandler(stateMgr, n->config.isRelayDestination(), groupCommManager);
14261422
Stage<RelayMessage> relays = this.seda.getStageManager().createStage(ServerConfigurationContext.PASSIVE_DUPLICATE_STAGE, RelayMessage.class, handler.getEventHandler(), 1);
14271423
this.groupCommManager.routeMessages(RelayMessage.class, relays.getSink());

tc-server/src/main/java/com/tc/server/Bootstrap.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -276,7 +276,7 @@ public void unpause(String path) {
276276

277277
@Override
278278
public int getServerCount() {
279-
return config.getConfiguration().getServerConfigurations().size();
279+
return config.getGroupConfiguration().getNodes().size();
280280
}
281281

282282
@Override

tc-server/src/main/java/com/tc/services/PlatformConfigurationImpl.java

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -17,43 +17,40 @@
1717
*/
1818
package com.tc.services;
1919

20+
import com.tc.config.ServerConfigurationManager;
2021
import java.util.Collection;
2122

2223
import org.terracotta.entity.PlatformConfiguration;
2324

24-
import org.terracotta.configuration.Configuration;
25-
import org.terracotta.configuration.ServerConfiguration;
2625

2726
/**
2827
* @author vmad
2928
*/
3029
public class PlatformConfigurationImpl implements PlatformConfiguration {
3130

32-
private final ServerConfiguration serverConfig;
33-
private final Configuration config;
31+
private final ServerConfigurationManager serverConfig;
3432

35-
public PlatformConfigurationImpl(ServerConfiguration serverConfig, Configuration config) {
33+
public PlatformConfigurationImpl(ServerConfigurationManager serverConfig) {
3634
this.serverConfig = serverConfig;
37-
this.config = config;
3835
}
3936

4037
@Override
4138
public String getServerName() {
42-
return serverConfig.getName();
39+
return serverConfig.getServerConfiguration().getName();
4340
}
4441

4542
@Override
4643
public String getHost() {
47-
return serverConfig.getHost();
44+
return serverConfig.getServerConfiguration().getHost();
4845
}
4946

5047
@Override
5148
public int getTsaPort() {
52-
return serverConfig.getTsaPort().getPort();
49+
return serverConfig.getServerConfiguration().getTsaPort().getPort();
5350
}
5451

5552
@Override
5653
public <T> Collection<T> getExtendedConfiguration(Class<T> type) {
57-
return config.getExtendedConfiguration(type);
54+
return serverConfig.getExtendedConfiguration(type);
5855
}
5956
}

tc-server/src/main/java/com/tc/services/TerracottaServiceProviderRegistry.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
*/
1818
package com.tc.services;
1919

20-
import org.terracotta.configuration.Configuration;
20+
import com.tc.config.ServerConfigurationManager;
2121

2222
import org.terracotta.entity.PlatformConfiguration;
2323
import org.terracotta.entity.ServiceProvider;
@@ -39,7 +39,7 @@ public interface TerracottaServiceProviderRegistry extends PrettyPrintable {
3939
* @param loader the classloader used for all services
4040
*
4141
*/
42-
void initialize(PlatformConfiguration platformConfiguration, Configuration configuration);
42+
void initialize(PlatformConfiguration platformConfiguration, ServerConfigurationManager configuration);
4343

4444
/**
4545
* Method to register platform level service provider which don't have life-cycle using SPI interface but otherwise act

tc-server/src/main/java/com/tc/services/TerracottaServiceProviderRegistryImpl.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
package com.tc.services;
1919

2020
import com.tc.classloader.BuiltinService;
21+
import com.tc.config.ServerConfigurationManager;
2122

2223
import org.slf4j.Logger;
2324
import org.slf4j.LoggerFactory;
@@ -28,7 +29,6 @@
2829

2930
import com.tc.util.Assert;
3031
import java.io.Closeable;
31-
import org.terracotta.configuration.Configuration;
3232

3333
import java.io.PrintWriter;
3434
import java.io.StringWriter;
@@ -56,7 +56,7 @@ public class TerracottaServiceProviderRegistryImpl implements TerracottaServiceP
5656
private boolean hasCreatedSubRegistries;
5757

5858
@Override
59-
public void initialize(PlatformConfiguration platformConfiguration, Configuration configuration) {
59+
public void initialize(PlatformConfiguration platformConfiguration, ServerConfigurationManager configuration) {
6060
List<ServiceProviderConfiguration> serviceProviderConfigurationList = configuration.getServiceConfigurations();
6161
Assert.assertFalse(this.hasCreatedSubRegistries);
6262
if(serviceProviderConfigurationList != null) {

0 commit comments

Comments
 (0)