Java Code Examples for org.elasticsearch.cluster.routing.ShardRouting#newUnassigned()
The following examples show how to use
org.elasticsearch.cluster.routing.ShardRouting#newUnassigned() .
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: DecommissionAllocationDeciderTest.java From crate with Apache License 2.0 | 6 votes |
@Before public void init() throws Exception { routingAllocation = mock(RoutingAllocation.class); when(routingAllocation.decision(any(Decision.class), anyString(), anyString())).then(new Answer<Object>() { @Override public Object answer(InvocationOnMock invocation) throws Throwable { return invocation.getArguments()[0]; } }); primaryShard = ShardRouting.newUnassigned( new ShardId("t", UUIDs.randomBase64UUID(), 0), true, RecoverySource.PeerRecoverySource.INSTANCE, new UnassignedInfo(UnassignedInfo.Reason.INDEX_CREATED, "dummy")); replicaShard = ShardRouting.newUnassigned( new ShardId("t", UUIDs.randomBase64UUID(), 0), false, RecoverySource.PeerRecoverySource.INSTANCE, new UnassignedInfo(UnassignedInfo.Reason.INDEX_CREATED, "dummy") ); n1 = new RoutingNode("n1", mock(DiscoveryNode.class)); n2 = new RoutingNode("n2", mock(DiscoveryNode.class)); }
Example 2
Source File: DiskThresholdDeciderUnitTests.java From crate with Apache License 2.0 | 4 votes |
@Test public void testCanAllocateUsesMaxAvailableSpace() { ClusterSettings nss = new ClusterSettings(Settings.EMPTY, ClusterSettings.BUILT_IN_CLUSTER_SETTINGS); DiskThresholdDecider decider = new DiskThresholdDecider(Settings.EMPTY, nss); MetaData metaData = MetaData.builder() .put(IndexMetaData.builder("test").settings(settings(Version.CURRENT)).numberOfShards(1).numberOfReplicas(1)) .build(); final Index index = metaData.index("test").getIndex(); ShardRouting test_0 = ShardRouting.newUnassigned(new ShardId(index, 0), true, EmptyStoreRecoverySource.INSTANCE, new UnassignedInfo(UnassignedInfo.Reason.INDEX_CREATED, "foo")); DiscoveryNode node_0 = new DiscoveryNode("node_0", buildNewFakeTransportAddress(), Collections.emptyMap(), new HashSet<>(Arrays.asList(DiscoveryNode.Role.values())), Version.CURRENT); DiscoveryNode node_1 = new DiscoveryNode("node_1", buildNewFakeTransportAddress(), Collections.emptyMap(), new HashSet<>(Arrays.asList(DiscoveryNode.Role.values())), Version.CURRENT); RoutingTable routingTable = RoutingTable.builder() .addAsNew(metaData.index("test")) .build(); ClusterState clusterState = ClusterState.builder(ClusterName.CLUSTER_NAME_SETTING.getDefault(Settings.EMPTY)) .metaData(metaData).routingTable(routingTable).build(); clusterState = ClusterState.builder(clusterState).nodes(DiscoveryNodes.builder() .add(node_0) .add(node_1) ).build(); // actual test -- after all that bloat :) ImmutableOpenMap.Builder<String, DiskUsage> leastAvailableUsages = ImmutableOpenMap.builder(); leastAvailableUsages.put("node_0", new DiskUsage("node_0", "node_0", "_na_", 100, 0)); // all full leastAvailableUsages.put("node_1", new DiskUsage("node_1", "node_1", "_na_", 100, 0)); // all full ImmutableOpenMap.Builder<String, DiskUsage> mostAvailableUsage = ImmutableOpenMap.builder(); // 20 - 99 percent since after allocation there must be at least 10% left and shard is 10byte mostAvailableUsage.put("node_0", new DiskUsage("node_0", "node_0", "_na_", 100, randomIntBetween(20, 100))); // this is weird and smells like a bug! it should be up to 20%? mostAvailableUsage.put("node_1", new DiskUsage("node_1", "node_1", "_na_", 100, randomIntBetween(0, 10))); ImmutableOpenMap.Builder<String, Long> shardSizes = ImmutableOpenMap.builder(); shardSizes.put("[test][0][p]", 10L); // 10 bytes final ClusterInfo clusterInfo = new ClusterInfo(leastAvailableUsages.build(), mostAvailableUsage.build(), shardSizes.build(), ImmutableOpenMap.of()); RoutingAllocation allocation = new RoutingAllocation(new AllocationDeciders(Collections.singleton(decider)), clusterState.getRoutingNodes(), clusterState, clusterInfo, System.nanoTime()); allocation.debugDecision(true); Decision decision = decider.canAllocate(test_0, new RoutingNode("node_0", node_0), allocation); assertEquals(mostAvailableUsage.toString(), Decision.Type.YES, decision.type()); assertThat(decision.getExplanation(), containsString("enough disk for shard on node")); decision = decider.canAllocate(test_0, new RoutingNode("node_1", node_1), allocation); assertEquals(mostAvailableUsage.toString(), Decision.Type.NO, decision.type()); assertThat(decision.getExplanation(), containsString("the node is above the high watermark cluster " + "setting [cluster.routing.allocation.disk.watermark.high=90%], using more disk space than the maximum allowed [90.0%]")); }
Example 3
Source File: DiskThresholdDeciderUnitTests.java From crate with Apache License 2.0 | 4 votes |
@Test public void testCannotAllocateDueToLackOfDiskResources() { ClusterSettings nss = new ClusterSettings(Settings.EMPTY, ClusterSettings.BUILT_IN_CLUSTER_SETTINGS); DiskThresholdDecider decider = new DiskThresholdDecider(Settings.EMPTY, nss); MetaData metaData = MetaData.builder() .put(IndexMetaData.builder("test").settings(settings(Version.CURRENT)).numberOfShards(1).numberOfReplicas(1)) .build(); final Index index = metaData.index("test").getIndex(); ShardRouting test_0 = ShardRouting.newUnassigned(new ShardId(index, 0), true, EmptyStoreRecoverySource.INSTANCE, new UnassignedInfo(UnassignedInfo.Reason.INDEX_CREATED, "foo")); DiscoveryNode node_0 = new DiscoveryNode("node_0", buildNewFakeTransportAddress(), Collections.emptyMap(), new HashSet<>(Arrays.asList(DiscoveryNode.Role.values())), Version.CURRENT); DiscoveryNode node_1 = new DiscoveryNode("node_1", buildNewFakeTransportAddress(), Collections.emptyMap(), new HashSet<>(Arrays.asList(DiscoveryNode.Role.values())), Version.CURRENT); RoutingTable routingTable = RoutingTable.builder() .addAsNew(metaData.index("test")) .build(); ClusterState clusterState = ClusterState.builder(ClusterName.CLUSTER_NAME_SETTING.getDefault(Settings.EMPTY)) .metaData(metaData).routingTable(routingTable).build(); clusterState = ClusterState.builder(clusterState).nodes(DiscoveryNodes.builder() .add(node_0) .add(node_1) ).build(); // actual test -- after all that bloat :) ImmutableOpenMap.Builder<String, DiskUsage> leastAvailableUsages = ImmutableOpenMap.builder(); leastAvailableUsages.put("node_0", new DiskUsage("node_0", "node_0", "_na_", 100, 0)); // all full ImmutableOpenMap.Builder<String, DiskUsage> mostAvailableUsage = ImmutableOpenMap.builder(); final int freeBytes = randomIntBetween(20, 100); mostAvailableUsage.put("node_0", new DiskUsage("node_0", "node_0", "_na_", 100, freeBytes)); ImmutableOpenMap.Builder<String, Long> shardSizes = ImmutableOpenMap.builder(); // way bigger than available space final long shardSize = randomIntBetween(110, 1000); shardSizes.put("[test][0][p]", shardSize); ClusterInfo clusterInfo = new ClusterInfo(leastAvailableUsages.build(), mostAvailableUsage.build(), shardSizes.build(), ImmutableOpenMap.of()); RoutingAllocation allocation = new RoutingAllocation(new AllocationDeciders(Collections.singleton(decider)), clusterState.getRoutingNodes(), clusterState, clusterInfo, System.nanoTime()); allocation.debugDecision(true); Decision decision = decider.canAllocate(test_0, new RoutingNode("node_0", node_0), allocation); assertEquals(Decision.Type.NO, decision.type()); assertThat(decision.getExplanation(), containsString( "allocating the shard to this node will bring the node above the high watermark cluster setting " +"[cluster.routing.allocation.disk.watermark.high=90%] " + "and cause it to have less than the minimum required [0b] of free space " + "(free: [" + freeBytes + "b], estimated shard size: [" + shardSize + "b])")); }
Example 4
Source File: SysShardsExpressionsTest.java From crate with Apache License 2.0 | 4 votes |
private IndexShard mockIndexShard() { IndexService indexService = mock(IndexService.class); indexUUID = UUIDs.randomBase64UUID(); Index index = new Index(indexName, indexUUID); ShardId shardId = new ShardId(indexName, indexUUID, 1); IndexShard indexShard = mock(IndexShard.class); when(indexService.index()).thenReturn(index); when(indexShard.shardId()).thenReturn(shardId); when(indexShard.state()).thenReturn(IndexShardState.STARTED); StoreStats storeStats = new StoreStats(123456L); when(indexShard.storeStats()).thenReturn(storeStats); Path dataPath = Paths.get("/dummy/" + indexUUID + "/" + shardId.id()); when(indexShard.shardPath()).thenReturn(new ShardPath(false, dataPath, dataPath, shardId)); DocsStats docsStats = new DocsStats(654321L, 0L, 200L); when(indexShard.docStats()).thenReturn(docsStats).thenThrow(IllegalIndexShardStateException.class); ShardRouting shardRouting = ShardRouting.newUnassigned( shardId, true, RecoverySource.PeerRecoverySource.INSTANCE, new UnassignedInfo(UnassignedInfo.Reason.INDEX_CREATED, "foo")); shardRouting = ShardRoutingHelper.initialize(shardRouting, "node1"); shardRouting = ShardRoutingHelper.moveToStarted(shardRouting); shardRouting = ShardRoutingHelper.relocate(shardRouting, "node_X"); when(indexShard.routingEntry()).thenReturn(shardRouting); when(indexShard.minimumCompatibleVersion()).thenReturn(Version.LATEST); RecoveryState recoveryState = mock(RecoveryState.class); when(indexShard.recoveryState()).thenReturn(recoveryState); RecoveryState.Index recoveryStateIndex = mock(RecoveryState.Index.class); RecoveryState.Timer recoveryStateTimer = mock(RecoveryState.Timer.class); when(recoveryState.getRecoverySource()).thenReturn(RecoverySource.PeerRecoverySource.INSTANCE); when(recoveryState.getIndex()).thenReturn(recoveryStateIndex); when(recoveryState.getStage()).thenReturn(RecoveryState.Stage.DONE); when(recoveryState.getTimer()).thenReturn(recoveryStateTimer); when(recoveryStateIndex.totalBytes()).thenReturn(2048L); when(recoveryStateIndex.reusedBytes()).thenReturn(1024L); when(recoveryStateIndex.recoveredBytes()).thenReturn(1024L); when(recoveryStateIndex.totalFileCount()).thenReturn(2); when(recoveryStateIndex.reusedFileCount()).thenReturn(1); when(recoveryStateIndex.recoveredFileCount()).thenReturn(1); when(recoveryStateTimer.time()).thenReturn(10000L); return indexShard; }