package voldemort.server.rebalance; import voldemort.annotations.jmx.JmxManaged; import voldemort.common.service.AbstractService; import voldemort.common.service.SchedulerService; import voldemort.common.service.ServiceType; import voldemort.server.StoreRepository; import voldemort.server.VoldemortConfig; import voldemort.server.protocol.admin.AsyncOperationService; import voldemort.store.metadata.MetadataStore; /** */ @JmxManaged(description = "Rebalancer service to help with rebalancing") public class RebalancerService extends AbstractService { private final SchedulerService schedulerService; private final Rebalancer rebalancer; public RebalancerService(StoreRepository storeRepository, MetadataStore metadataStore, VoldemortConfig voldemortConfig, AsyncOperationService asyncService, SchedulerService service) { super(ServiceType.REBALANCE); schedulerService = service; rebalancer = new Rebalancer(storeRepository, metadataStore, voldemortConfig, asyncService); } @Override protected void startInner() { rebalancer.start(); schedulerService.scheduleNow(rebalancer); } @Override protected void stopInner() { rebalancer.stop(); } public Rebalancer getRebalancer() { return rebalancer; } }