Skip to content

Commit

Permalink
Merge pull request #6978 from enonic/issue-6977
Browse files Browse the repository at this point in the history
Use custom number of replicas for new repositories (#6977)
  • Loading branch information
GlennRicaud authored Mar 7, 2019
2 parents 5f1ba32 + d129ed7 commit 19b2313
Show file tree
Hide file tree
Showing 4 changed files with 43 additions and 13 deletions.
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
package com.enonic.xp.cluster.impl;

import com.enonic.xp.cluster.ClusterId;
import com.enonic.xp.cluster.ClusterValidationWarning;
import com.enonic.xp.cluster.ClusterValidationError;

class ClusterHealthWarning
implements ClusterValidationWarning
class ClusterHealthError
implements ClusterValidationError
{
private final ClusterId providerId;

private final String errorMessage;

ClusterHealthWarning( final ClusterId providerId, final String errorMessage )
ClusterHealthError( final ClusterId providerId, final String errorMessage )
{
this.providerId = providerId;
this.errorMessage = errorMessage;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,10 @@ public ClusterValidatorResult validate( final Clusters clusters )
{
if ( !provider.getHealth().isHealthy() )
{
final ClusterHealthWarning warning = new ClusterHealthWarning( provider.getId(), provider.getHealth().getErrorMessage() );
final ClusterHealthError error = new ClusterHealthError( provider.getId(), provider.getHealth().getErrorMessage() );

return ClusterValidatorResult.create().
warning( warning ).
error( error ).
build();
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53,8 +53,8 @@ public void single_provider_life_cycle()

provider.setHealth( ClusterHealth.red() );
Thread.sleep( CHECK_INTERVAL_MS );
assertClusterOk();
assertActive( provider );
assertClusterError();
assertDeactivated( provider );

provider.setHealth( ClusterHealth.green() );
Thread.sleep( CHECK_INTERVAL_MS );
Expand Down Expand Up @@ -91,8 +91,8 @@ public void multiple_providers_life_cycle()

provider1.setHealth( ClusterHealth.red() );
Thread.sleep( CHECK_INTERVAL_MS );
assertClusterOk();
assertActive( provider1, provider2 );
assertClusterError();
assertDeactivated( provider1, provider2 );
}

@Test
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.fasterxml.jackson.databind.node.ObjectNode;

import com.enonic.xp.index.IndexType;
import com.enonic.xp.repo.impl.elasticsearch.ClusterHealthStatus;
import com.enonic.xp.repo.impl.elasticsearch.ClusterStatusCode;
Expand All @@ -16,6 +18,7 @@
import com.enonic.xp.repository.IndexSettings;
import com.enonic.xp.repository.NodeRepositoryService;
import com.enonic.xp.repository.RepositoryId;
import com.enonic.xp.security.SystemConstants;
import com.enonic.xp.util.JsonHelper;

@Component(immediate = true)
Expand Down Expand Up @@ -90,15 +93,42 @@ private void doCreateIndex( final CreateRepositoryParams params, final IndexType

private IndexSettings mergeWithDefaultSettings( final CreateRepositoryParams params, final IndexType indexType )
{
final IndexSettings defaultSetting = DEFAULT_INDEX_RESOURCE_PROVIDER.getSettings( params.getRepositoryId(), indexType );
final IndexSettings defaultSettings = getDefaultSettings( params, indexType );

final IndexSettings indexSettings = params.getRepositorySettings().getIndexSettings( indexType );
if ( indexSettings != null )
{
return new IndexSettings( JsonHelper.merge( defaultSetting.getNode(), indexSettings.getNode() ) );
return new IndexSettings( JsonHelper.merge( defaultSettings.getNode(), indexSettings.getNode() ) );
}

return defaultSettings;
}

private IndexSettings getDefaultSettings( final CreateRepositoryParams params, final IndexType indexType )
{
final IndexSettings defaultSettings = DEFAULT_INDEX_RESOURCE_PROVIDER.getSettings( params.getRepositoryId(), indexType );
if ( SystemConstants.SYSTEM_REPO.getId().equals( params.getRepositoryId() ) )
{
return defaultSettings;
}

try
{
final String numberOfReplicasString =
indexServiceInternal.getIndexSettings( SystemConstants.SYSTEM_REPO.getId(), IndexType.VERSION ).getNode().
get( "index.number_of_replicas" ).
textValue();
final int numberOfReplicas = Integer.parseInt( numberOfReplicasString );
final ObjectNode indexNodeObject = (ObjectNode) defaultSettings.getNode().get( "index" );
indexNodeObject.put( "number_of_replicas", numberOfReplicas );
}
catch ( Exception e )
{
LOG.warn( "Failed to retrieve number of replicas from [" +
resolveIndexName( SystemConstants.SYSTEM_REPO.getId(), IndexType.VERSION ) + "]" );
}

return defaultSetting;
return defaultSettings;
}

private void applyMappings( final CreateRepositoryParams params )
Expand Down

0 comments on commit 19b2313

Please sign in to comment.