Package voldemort.server.rebalance

Examples of voldemort.server.rebalance.RebalancerState


            List<Integer> nodesChecked = Lists.newArrayList();
            for(RebalanceTaskInfo plan: plans) {
                nodesChecked.add(plan.getStealerId());
                assertEquals(servers[plan.getStealerId()].getMetadataStore().getRebalancerState(),
                             new RebalancerState(Lists.newArrayList(plan)));
            }

            List<Integer> allNodes = Lists.newArrayList(Utils.nodeListToNodeIdList(Lists.newArrayList(currentCluster.getNodes())));
            allNodes.removeAll(nodesChecked);

            // Check all other nodes
            for(int nodeId: allNodes) {
                assertEquals(servers[nodeId].getMetadataStore().getRebalancerState(),
                             new RebalancerState(new ArrayList<RebalanceTaskInfo>()));
            }

            // Clean-up everything
            cleanUpAllState();

            // Test 2) Add a plan before hand on one of them which should
            // trigger a rollback
            servers[3].getMetadataStore()
                      .getRebalancerState()
                      .update(new RebalanceTaskInfo(3,
                                                    0,
                                                    new HashMap<String, List<Integer>>(),
                                                    currentCluster));

            try {
                adminClient.rebalanceOps.rebalanceStateChange(currentCluster,
                                                              finalCluster,
                                                              servers[2].getMetadataStore()
                                                                        .getStoreDefList(),
                                                              servers[2].getMetadataStore()
                                                                        .getStoreDefList(),
                                                              plans,
                                                              false,
                                                              false,
                                                              true,
                                                              true,
                                                              true);
                fail("Should have thrown an exception since we added state before hand");
            } catch(VoldemortRebalancingException e) {}

            // All nodes should have nothing in their rebalancing state
            // except node 3
            for(VoldemortServer server: servers) {
                if(server.getMetadataStore().getNodeId() != 3) {
                    assertEquals(server.getMetadataStore().getRebalancerState(),
                                 new RebalancerState(new ArrayList<RebalanceTaskInfo>()));
                }
            }

            // Clean-up everything
            cleanUpAllState();

            // Test 3) Shut one node down
            ServerTestUtils.stopVoldemortServer(servers[3]);
            servers[3] = null;

            try {
                adminClient.rebalanceOps.rebalanceStateChange(currentCluster,
                                                              finalCluster,
                                                              servers[2].getMetadataStore()
                                                                        .getStoreDefList(),
                                                              servers[2].getMetadataStore()
                                                                        .getStoreDefList(),
                                                              plans,
                                                              false,
                                                              false,
                                                              true,
                                                              true,
                                                              true);
                fail("Should have thrown an exception since we added state before hand");
            } catch(VoldemortRebalancingException e) {}

            // All nodes should have nothing in their rebalancing state
            // exception node 3
            for(VoldemortServer server: servers) {
                if(server != null) {
                    assertEquals(server.getMetadataStore().getRebalancerState(),
                                 new RebalancerState(new ArrayList<RebalanceTaskInfo>()));
                }
            }
        } finally {
            shutDown();
        }
View Full Code Here


            List<Integer> nodesChecked = Lists.newArrayList();
            for(RebalanceTaskInfo plan: plans) {
                nodesChecked.add(plan.getStealerId());
                assertEquals(servers[plan.getStealerId()].getMetadataStore().getRebalancerState(),
                             new RebalancerState(Lists.newArrayList(plan)));
                assertEquals(servers[plan.getStealerId()].getMetadataStore().getCluster(),
                             finalCluster);
            }

            List<Integer> allNodes = Lists.newArrayList(Utils.nodeListToNodeIdList(Lists.newArrayList(currentCluster.getNodes())));
            allNodes.removeAll(nodesChecked);

            // Check all other nodes
            for(int nodeId: allNodes) {
                assertEquals(servers[nodeId].getMetadataStore().getRebalancerState(),
                             new RebalancerState(new ArrayList<RebalanceTaskInfo>()));
                assertEquals(servers[nodeId].getMetadataStore().getCluster(), finalCluster);
            }

            // Clean-up everything
            cleanUpAllState();

            // Test 2) Add a plan before hand on one of them which should
            // trigger a rollback
            servers[3].getMetadataStore()
                      .getRebalancerState()
                      .update(new RebalanceTaskInfo(3,
                                                    0,
                                                    new HashMap<String, List<Integer>>(),
                                                    currentCluster));

            try {
                adminClient.rebalanceOps.rebalanceStateChange(currentCluster,
                                                              finalCluster,
                                                              servers[2].getMetadataStore()
                                                                        .getStoreDefList(),
                                                              servers[2].getMetadataStore()
                                                                        .getStoreDefList(),
                                                              plans,
                                                              false,
                                                              true,
                                                              true,
                                                              true,
                                                              true);
                fail("Should have thrown an exception since we added state before hand");
            } catch(VoldemortRebalancingException e) {}

            // All nodes should have nothing in their rebalancing state
            // except node 3 + all of them should have old cluster metadata
            for(VoldemortServer server: servers) {
                if(server.getMetadataStore().getNodeId() != 3) {
                    assertEquals(server.getMetadataStore().getRebalancerState(),
                                 new RebalancerState(new ArrayList<RebalanceTaskInfo>()));
                }
                assertEquals(server.getMetadataStore().getCluster(), currentCluster);
            }

            // Clean-up everything
            cleanUpAllState();

            // Test 3) Shut one node down
            ServerTestUtils.stopVoldemortServer(servers[3]);
            servers[3] = null;

            try {
                adminClient.rebalanceOps.rebalanceStateChange(currentCluster,
                                                              finalCluster,
                                                              servers[2].getMetadataStore()
                                                                        .getStoreDefList(),
                                                              servers[2].getMetadataStore()
                                                                        .getStoreDefList(),
                                                              plans,
                                                              false,
                                                              true,
                                                              true,
                                                              true,
                                                              true);
                fail("Should have thrown an exception since we added state before hand");
            } catch(VoldemortRebalancingException e) {}

            // All nodes should have nothing in their rebalancing state
            // exception node 3
            for(VoldemortServer server: servers) {
                if(server != null) {
                    assertEquals(server.getMetadataStore().getRebalancerState(),
                                 new RebalancerState(new ArrayList<RebalanceTaskInfo>()));
                    assertEquals(server.getMetadataStore().getCluster(), currentCluster);
                }
            }
        } finally {
            shutDown();
View Full Code Here

                put(SERVER_STATE_KEY, VoldemortState.REBALANCING_MASTER_SERVER);
                initCache(SERVER_STATE_KEY);
            }

            // Add the steal information
            RebalancerState rebalancerState = getRebalancerState();
            if(!rebalancerState.update(stealInfo)) {
                throw new VoldemortException("Could not add steal information " + stealInfo
                                             + " since a plan for the same donor node "
                                             + stealInfo.getDonorId() + " ( "
                                             + rebalancerState.find(stealInfo.getDonorId())
                                             + " ) already exists");
            }
            put(MetadataStore.REBALANCING_STEAL_INFO, rebalancerState);
            initCache(REBALANCING_STEAL_INFO);
        } finally {
View Full Code Here

     */
    public void deleteRebalancingState(RebalanceTaskInfo stealInfo) {
        // acquire write lock
        writeLock.lock();
        try {
            RebalancerState rebalancerState = getRebalancerState();

            if(!rebalancerState.remove(stealInfo))
                throw new IllegalArgumentException("Couldn't find " + stealInfo + " in "
                                                   + rebalancerState + " while deleting");

            if(rebalancerState.isEmpty()) {
                logger.debug("Cleaning all rebalancing state");
                cleanAllRebalancingState();
            } else {
                put(REBALANCING_STEAL_INFO, rebalancerState);
                initCache(REBALANCING_STEAL_INFO);
View Full Code Here

        // Initialize with default if not present
        initCache(SLOP_STREAMING_ENABLED_KEY, true);
        initCache(PARTITION_STREAMING_ENABLED_KEY, true);
        initCache(READONLY_FETCH_ENABLED_KEY, true);
        initCache(REBALANCING_STEAL_INFO, new RebalancerState(new ArrayList<RebalanceTaskInfo>()));
        initCache(SERVER_STATE_KEY, VoldemortState.NORMAL_SERVER.toString());
        initCache(REBALANCING_SOURCE_CLUSTER_XML, null);
        initCache(REBALANCING_SOURCE_STORES_XML, null);

        // set transient values
View Full Code Here

        if(CLUSTER_KEY.equals(key)) {
            valueStr = clusterMapper.writeCluster((Cluster) value.getValue());
        } else if(STORES_KEY.equals(key)) {
            valueStr = storeMapper.writeStoreList((List<StoreDefinition>) value.getValue());
        } else if(REBALANCING_STEAL_INFO.equals(key)) {
            RebalancerState rebalancerState = (RebalancerState) value.getValue();
            valueStr = rebalancerState.toJsonString();
        } else if(SERVER_STATE_KEY.equals(key) || NODE_ID_KEY.equals(key)
                  || SLOP_STREAMING_ENABLED_KEY.equals(key)
                  || PARTITION_STREAMING_ENABLED_KEY.equals(key)
                  || READONLY_FETCH_ENABLED_KEY.equals(key)) {
            valueStr = value.getValue().toString();
View Full Code Here

        } else if(REBALANCING_STEAL_INFO.equals(key)) {
            String valueString = value.getValue();
            if(valueString.startsWith("[")) {
                valueObject = RebalancerState.create(valueString);
            } else {
                valueObject = new RebalancerState(Arrays.asList(RebalanceTaskInfo.create(valueString)));
            }
        } else if(REBALANCING_SOURCE_CLUSTER_XML.equals(key)) {
            if(value.getValue() != null && value.getValue().length() > 0) {
                valueObject = clusterMapper.readCluster(new StringReader(value.getValue()));
            }
View Full Code Here

TOP

Related Classes of voldemort.server.rebalance.RebalancerState

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.