@Override public SitesConfiguration get() { SitesConfigurationBuilder builder = new ConfigurationBuilder().sites(); builder.disableBackups(this.backups.isEmpty()); for (Map.Entry<String, BackupConfiguration> backup : this.backups.entrySet()) { builder.addBackup().read(backup.getValue()); builder.addInUseBackupSite(backup.getKey()); } return builder.create(); } }
@Override public void accept(ConfigurationBuilder builder) { super.accept(builder); builder.clustering().partitionHandling().read(this.partitionHandling.get()); builder.clustering().stateTransfer().read(this.stateTransfer.get()); SitesConfigurationBuilder sitesBuilder = builder.sites(); sitesBuilder.read(this.backups.get()); } }
@Override public ServiceConfigurator configure(OperationContext context, ModelNode model) throws OperationFailedException { this.backups.clear(); if (model.hasDefined(BackupResourceDefinition.WILDCARD_PATH.getKey())) { SitesConfigurationBuilder builder = new ConfigurationBuilder().sites(); for (Property property : model.get(BackupResourceDefinition.WILDCARD_PATH.getKey()).asPropertyList()) { String siteName = property.getName(); ModelNode backup = property.getValue(); BackupConfigurationBuilder backupBuilder = builder.addBackup(); backupBuilder.site(siteName) .enabled(ENABLED.resolveModelAttribute(context, backup).asBoolean()) .backupFailurePolicy(ModelNodes.asEnum(FAILURE_POLICY.resolveModelAttribute(context, backup), BackupFailurePolicy.class)) .replicationTimeout(TIMEOUT.resolveModelAttribute(context, backup).asLong()) .strategy(ModelNodes.asEnum(STRATEGY.resolveModelAttribute(context, backup), BackupStrategy.class)) .takeOffline() .afterFailures(AFTER_FAILURES.resolveModelAttribute(context, backup).asInt()) .minTimeToWait(MIN_WAIT.resolveModelAttribute(context, backup).asLong()) ; this.backups.put(siteName, backupBuilder.create()); } } return this; }
@Override public SitesConfiguration get() { SitesConfigurationBuilder builder = new ConfigurationBuilder().sites(); builder.disableBackups(this.backups.isEmpty()); for (Map.Entry<String, BackupConfiguration> backup : this.backups.entrySet()) { builder.addBackup().read(backup.getValue()); builder.addInUseBackupSite(backup.getKey()); } return builder.create(); } }
@Test(expectedExceptions = CacheConfigurationException.class) public void testBackupSiteNotSpecified() { ConfigurationBuilder cb = new ConfigurationBuilder(); cb. sites().addBackup() .site(); cb.build(); }
private void parseBackupFor(XMLExtendedStreamReader reader, ConfigurationBuilder ccb) throws XMLStreamException { ccb.sites().backupFor().reset(); BackupForBuilder backupForBuilder = ccb.sites().backupFor(); for (int i = 0; i < reader.getAttributeCount(); i++) { ParseUtils.requireNoNamespaceAttribute(reader, i); String value = replaceProperties(reader.getAttributeValue(i)); Attribute attribute = Attribute.forName(reader.getAttributeLocalName(i)); switch (attribute) { case REMOTE_SITE: backupForBuilder.remoteSite(value); break; case REMOTE_CACHE: backupForBuilder.remoteCache(value); break; default: throw ParseUtils.unexpectedElement(reader); } } ParseUtils.requireNoContent(reader); }
@Test(expectedExceptions = CacheConfigurationException.class) public void testTwoPhaseCommitAsyncBackup() { ConfigurationBuilder cb = new ConfigurationBuilder(); cb. sites().addBackup() .site("LON") .strategy(BackupConfiguration.BackupStrategy.ASYNC) .useTwoPhaseCommit(true); cb.build(); }
@Test(expectedExceptions = CacheConfigurationException.class) public void testCustomBackupFailurePolicyClassNotSpecified() { ConfigurationBuilder cb = new ConfigurationBuilder(); cb. sites().addBackup() .site("LON") .backupFailurePolicy(BackupFailurePolicy.CUSTOM) .failurePolicyClass(); cb.build(); }
private ConfigurationBuilder configurationBuilderForSite(String backupSiteName) { ConfigurationBuilder builder = getDefaultClusteredCacheConfig(CacheMode.DIST_SYNC); builder.sites().addBackup().site(backupSiteName) .stateTransfer().chunkSize(1); return builder; }
@Override public void accept(ConfigurationBuilder builder) { super.accept(builder); builder.clustering().partitionHandling().read(this.partitionHandling.get()); builder.clustering().stateTransfer().read(this.stateTransfer.get()); SitesConfigurationBuilder sitesBuilder = builder.sites(); sitesBuilder.read(this.backups.get()); } }
@Override protected ConfigurationBuilder defaultConfigurationForSite(int siteIndex) { if (siteIndex == 0) { //default cache will backup to site_1 ConfigurationBuilder builder = newConfiguration(); builder.sites().addBackup().site(siteName(1)).strategy(BackupConfiguration.BackupStrategy.SYNC); return builder; } else { return newConfiguration(); } }
@Override protected EmbeddedCacheManager createCacheManager() throws Exception { GlobalConfigurationBuilder lonGc = GlobalConfigurationBuilder.defaultClusteredBuilder(); lonGc.site().localSite("LON"); ConfigurationBuilder lon = getDefaultClusteredCacheConfig(CacheMode.LOCAL, false); lon.sites().addBackup() .site("NYC") .strategy(BackupConfiguration.BackupStrategy.SYNC); nycBackup = getDefaultClusteredCacheConfig(CacheMode.LOCAL, false); nycBackup.sites().backupFor().remoteSite("NYC").defaultRemoteCache(); // Remember to not do nothing else other than // creating the cache manager in order to avoid leaks return TestCacheManagerFactory.createClusteredCacheManager(lonGc, lon); }
@Override public void call() { ConfigurationBuilder builder = getDefaultClusteredCacheConfig(CacheMode.LOCAL); builder.sites().disableBackups(true); cm.defineConfiguration(cacheName, builder.build()); Cache cache = cm.getCache(cacheName); Interpreter interpreter = cache.getAdvancedCache().getComponentRegistry().getComponent(Interpreter.class); String sessionId = interpreter.createSessionId(cacheName); try { assertInterpreterError(interpreter, sessionId, "site --status;", "ISPN019033: The cache '" + cacheName + "' has no backups configured."); } catch (Exception e) { throw new RuntimeException(e); } } });
private void reCreateNYC() { ConfigurationBuilder nyc = getNycActiveConfig(); nyc.sites().addBackup() .site(LON) .strategy(BackupConfiguration.BackupStrategy.SYNC) .sites().addInUseBackupSite(LON); createSite(NYC, initialClusterSize, globalConfigurationBuilderForSite(NYC), nyc); }
@Test (expectedExceptions = CacheConfigurationException.class) public void testSameBackupDefinedMultipleTimes() { ConfigurationBuilder cb = new ConfigurationBuilder(); cb. sites().addBackup() .site("LON") .strategy(BackupConfiguration.BackupStrategy.SYNC) .sites().addBackup() .site("LON") .sites().addBackup() .site("NYC"); cb.build(); }
@Override protected void createSites() { GlobalConfigurationBuilder lonGc = GlobalConfigurationBuilder.defaultClusteredBuilder(); lonGc .site().localSite("LON"); ConfigurationBuilder lon = getLonActiveConfig(); lon.sites().addBackup() .site("NYC") .backupFailurePolicy(lonBackupFailurePolicy) .replicationTimeout(100) //keep it small so that the test doesn't take long to run .takeOffline().afterFailures(failures). backup() .strategy(lonBackupStrategy) .failurePolicyClass(lonCustomFailurePolicyClass); lon.sites().addInUseBackupSite("NYC"); createSite("LON", 2, lonGc, lon); }
protected ConfigurationBuilder lonConfigurationBuilder() { ConfigurationBuilder lon = getLonActiveConfig(); BackupConfigurationBuilder lonBackupConfigurationBuilder = lon.sites().addBackup(); lonBackupConfigurationBuilder .site(NYC) .backupFailurePolicy(lonBackupFailurePolicy) .strategy(lonBackupStrategy) .failurePolicyClass(lonCustomFailurePolicyClass) .useTwoPhaseCommit(use2Pc) .sites().addInUseBackupSite(NYC); adaptLONConfiguration(lonBackupConfigurationBuilder); return lon; }
public void testMultipleCachesWithNoCacheName() { ConfigurationBuilder cb = new ConfigurationBuilder(); cb. sites().addBackup() .site("LON") .strategy(BackupConfiguration.BackupStrategy.SYNC) .sites().addBackup() .site("SFO") .sites().addBackup() .site("NYC"); cb.build(); } }
@Override protected void createSites() { ConfigurationBuilder lon = lonConfigurationBuilder(); ConfigurationBuilder nyc = getNycActiveConfig(); nyc.sites().addBackup() .site(LON) .strategy(BackupConfiguration.BackupStrategy.SYNC) .sites().addInUseBackupSite(LON); createSite(LON, initialClusterSize, globalConfigurationBuilderForSite(LON), lon); createSite(NYC, initialClusterSize, globalConfigurationBuilderForSite(NYC), nyc); if (!implicitBackupCache) { ConfigurationBuilder nycBackup = getDefaultClusteredCacheConfig(CacheMode.DIST_SYNC, false); nycBackup.sites().backupFor().remoteSite(NYC).defaultRemoteCache(); startCache(LON, "nycBackup", nycBackup); ConfigurationBuilder lonBackup = getDefaultClusteredCacheConfig(CacheMode.DIST_SYNC, isLonBackupTransactional); lonBackup.sites().backupFor().remoteSite(LON).defaultRemoteCache(); startCache(NYC, "lonBackup", lonBackup); Configuration lonBackupConfig = cache(NYC, "lonBackup", 0).getCacheConfiguration(); assertTrue(lonBackupConfig.sites().backupFor().isBackupFor(LON, CacheContainer.DEFAULT_CACHE_NAME)); } waitForSites(LON, NYC); }
@Override protected void afterSitesCreated() { super.afterSitesCreated(); Security.doAs(ADMIN, (PrivilegedAction<Void>) () -> { ConfigurationBuilder builder = defaultConfigurationForSite(0); builder.sites().addBackup().site(siteName(1)).strategy(BackupConfiguration.BackupStrategy.SYNC); defineInSite(site(0), XSITECACHE, builder.build()); site(0).waitForClusterToForm(XSITECACHE); builder = defaultConfigurationForSite(1); defineInSite(site(1), XSITECACHE, builder.build()); site(1).waitForClusterToForm(XSITECACHE); return null; }); }