Package edu.brown.hstore

Source Code of edu.brown.hstore.MockHStoreCoordinator

package edu.brown.hstore;

import org.apache.log4j.Logger;

import com.google.protobuf.RpcCallback;
import com.google.protobuf.RpcController;

import edu.brown.hstore.Hstoreservice.HStoreService;
import edu.brown.hstore.Hstoreservice.HeartbeatRequest;
import edu.brown.hstore.Hstoreservice.HeartbeatResponse;
import edu.brown.hstore.Hstoreservice.InitializeRequest;
import edu.brown.hstore.Hstoreservice.InitializeResponse;
import edu.brown.hstore.Hstoreservice.SendDataRequest;
import edu.brown.hstore.Hstoreservice.SendDataResponse;
import edu.brown.hstore.Hstoreservice.ShutdownPrepareRequest;
import edu.brown.hstore.Hstoreservice.ShutdownPrepareResponse;
import edu.brown.hstore.Hstoreservice.ShutdownRequest;
import edu.brown.hstore.Hstoreservice.ShutdownResponse;
import edu.brown.hstore.Hstoreservice.Status;
import edu.brown.hstore.Hstoreservice.TimeSyncRequest;
import edu.brown.hstore.Hstoreservice.TimeSyncResponse;
import edu.brown.hstore.Hstoreservice.TransactionDebugRequest;
import edu.brown.hstore.Hstoreservice.TransactionDebugResponse;
import edu.brown.hstore.Hstoreservice.TransactionFinishRequest;
import edu.brown.hstore.Hstoreservice.TransactionFinishResponse;
import edu.brown.hstore.Hstoreservice.TransactionInitRequest;
import edu.brown.hstore.Hstoreservice.TransactionInitResponse;
import edu.brown.hstore.Hstoreservice.TransactionMapRequest;
import edu.brown.hstore.Hstoreservice.TransactionMapResponse;
import edu.brown.hstore.Hstoreservice.TransactionPrefetchAcknowledgement;
import edu.brown.hstore.Hstoreservice.TransactionPrefetchResult;
import edu.brown.hstore.Hstoreservice.TransactionPrepareRequest;
import edu.brown.hstore.Hstoreservice.TransactionPrepareResponse;
import edu.brown.hstore.Hstoreservice.TransactionRedirectRequest;
import edu.brown.hstore.Hstoreservice.TransactionRedirectResponse;
import edu.brown.hstore.Hstoreservice.TransactionReduceRequest;
import edu.brown.hstore.Hstoreservice.TransactionReduceResponse;
import edu.brown.hstore.Hstoreservice.TransactionWorkRequest;
import edu.brown.hstore.Hstoreservice.TransactionWorkResponse;
import edu.brown.hstore.Hstoreservice.UnevictDataRequest;
import edu.brown.hstore.Hstoreservice.UnevictDataResponse;
import edu.brown.logging.LoggerUtil;
import edu.brown.logging.LoggerUtil.LoggerBoolean;
import edu.brown.utils.EventObservable;
import edu.brown.utils.EventObserver;
import edu.brown.utils.PartitionSet;
import edu.brown.utils.StringUtil;
import edu.brown.hstore.conf.HStoreConf;
import edu.brown.hstore.txns.RemoteTransaction;

public class MockHStoreCoordinator extends HStoreCoordinator {
    private static final Logger LOG = Logger.getLogger(MockHStoreCoordinator.class);
    private final static LoggerBoolean debug = new LoggerBoolean();
    private final static LoggerBoolean trace = new LoggerBoolean();
    static {
        LoggerUtil.attachObserver(LOG, debug, trace);
    }
   
    final TransactionQueueManager txnQueueManager;
    final HStoreConf hstore_conf;
    final HStoreSite hstore_site;
   
    /**
     * Constructor
     * @param catalog_site
     */
    public MockHStoreCoordinator(final MockHStoreSite hstore_site) {
        super(hstore_site);
        this.hstore_site = hstore_site;
        this.hstore_conf = this.hstore_site.getHStoreConf();
        this.txnQueueManager = this.hstore_site.getTransactionQueueManager();
       
        Thread t = new Thread(this.txnQueueManager);
        t.setDaemon(true);
        t.start();
       
        // For debugging!
        this.getReadyObservable().addObserver(new EventObserver<HStoreCoordinator>() {
            @Override
            public void update(EventObservable<HStoreCoordinator> o, HStoreCoordinator arg) {
                if (HStoreCoordinator.getRemoteCoordinators(hstore_site.getSite()).isEmpty() == false) {
                    LOG.info("Established connections to remote HStoreCoordinators:\n" +
                             StringUtil.join("  ", "\n", HStoreCoordinator.getRemoteCoordinators(hstore_site.getSite())));
                }
            }
        });
       
//        Runtime.getRuntime().addShutdownHook(new Thread() {
//            @Override
//            public void run() {
//                if (isShuttingDown() == false) {
//                    shutdownCluster();
//                    System.out.println("Shutdown hook ran!");
//                }
//            }
//        });
    }
   
    @Override
    protected HStoreService initHStoreService() {
        return new MockServiceHandler();
    }
    @Override
    protected void initCluster() {
        // Nothing to do...
    }
   
    private class MockServiceHandler extends HStoreService {

        @Override
        public void transactionInit(RpcController controller, TransactionInitRequest request, RpcCallback<TransactionInitResponse> done) {
            LOG.info("Incoming " + request.getClass().getSimpleName());
            PartitionSet partitions = new PartitionSet(request.getPartitionsList());
            RemoteTransaction ts = hstore_site.getTransactionInitializer()
                                             .createRemoteTransaction(request.getTransactionId(),
                                                                      partitions,
                                                                      null,
                                                                      request.getBasePartition(),
                                                                      request.getProcedureId());
            // FIXME hstore_site.transactionInit(ts, done);
        }

        @Override
        public void transactionWork(RpcController controller, TransactionWorkRequest request, RpcCallback<TransactionWorkResponse> done) {
            LOG.info("Incoming " + request.getClass().getSimpleName());
            // TODO Auto-generated method stub
           
        }

        @Override
        public void transactionPrepare(RpcController controller, TransactionPrepareRequest request, RpcCallback<TransactionPrepareResponse> done) {
            LOG.info("Incoming " + request.getClass().getSimpleName());
            // TODO Auto-generated method stub
           
        }

        @Override
        public void transactionFinish(RpcController controller, TransactionFinishRequest request, RpcCallback<TransactionFinishResponse> done) {
            LOG.info("Incoming " + request.getClass().getSimpleName());
            // TODO Auto-generated method stub
        }

        @Override
        public void transactionRedirect(RpcController controller, TransactionRedirectRequest request, RpcCallback<TransactionRedirectResponse> done) {
            LOG.info("Incoming " + request.getClass().getSimpleName());
            // Ignore
        }
       
        @Override
        public void initialize(RpcController controller, InitializeRequest request, RpcCallback<InitializeResponse> done) {
            // TODO Auto-generated method stub
        }

        @Override
        public void shutdown(RpcController controller, ShutdownRequest request, RpcCallback<ShutdownResponse> done) {
            LOG.info("Incoming " + request.getClass().getSimpleName());
            ShutdownResponse response = ShutdownResponse.newBuilder()
                                                     .setSenderSite(hstore_site.getSiteId())
                                                     .build();
            System.exit(1);
            done.run(response);
           
        }
       
        @Override
        public void heartbeat(RpcController controller, HeartbeatRequest request, RpcCallback<HeartbeatResponse> done) {
            // TODO Auto-generated method stub
           
        }

        @Override
        public void timeSync(RpcController controller, TimeSyncRequest request, RpcCallback<TimeSyncResponse> done) {
            // TODO Auto-generated method stub
           
        }

        @Override
        public void transactionMap(RpcController controller, TransactionMapRequest request, RpcCallback<TransactionMapResponse> done) {
            // TODO Auto-generated method stub
           
        }

        @Override
        public void transactionReduce(RpcController controller, TransactionReduceRequest request, RpcCallback<TransactionReduceResponse> done) {
            // TODO Auto-generated method stub
           
        }

        @Override
        public void sendData(RpcController controller, SendDataRequest request, RpcCallback<SendDataResponse> done) {
            // TODO Auto-generated method stub
           
        }

        @Override
        public void transactionPrefetch(RpcController controller, TransactionPrefetchResult request,
                RpcCallback<TransactionPrefetchAcknowledgement> done) {
            // TODO Auto-generated method stub
           
        }

        @Override
        public void shutdownPrepare(RpcController controller, ShutdownPrepareRequest request, RpcCallback<ShutdownPrepareResponse> done) {
            // TODO Auto-generated method stub
           
        }

        @Override
        public void transactionDebug(RpcController controller, TransactionDebugRequest request, RpcCallback<TransactionDebugResponse> done) {
            // TODO Auto-generated method stub
           
        }

    @Override
    public void unevictData(RpcController controller,
        UnevictDataRequest request,
        RpcCallback<UnevictDataResponse> done) {
      LOG.info(String.format("Received %s from HStoreSite %s at HStoreSite %s",
                    request.getClass().getSimpleName(),
                    HStoreThreadManager.formatSiteName(request.getSenderSite()),
                    HStoreThreadManager.formatSiteName(hstore_site.getSiteId())));

            if (debug.val)
                LOG.debug(String.format("Received %s from HStoreSite %s",
                          request.getClass().getSimpleName(),
                          HStoreThreadManager.formatSiteName(request.getSenderSite())));
            Long oldTxnId = request.getTransactionId();
            UnevictDataResponse.Builder builder = UnevictDataResponse.newBuilder()
                                                    .setSenderSite(hstore_site.getSiteId())
                                                    .setTransactionId(oldTxnId)
                                                    .setPartitionId(1) // some id
                                                    .setStatus(Status.OK);
            done.run(builder.build());  

     
    }
    }

}
TOP

Related Classes of edu.brown.hstore.MockHStoreCoordinator

TOP
Copyright © 2018 www.massapi.com. 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.
i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) })(window,document,'script','//www.google-analytics.com/analytics.js','ga'); ga('create', 'UA-20639858-1', 'auto'); ga('send', 'pageview');