private Transaction FindOrBeginTransaction(SessionName session, TransactionSelector selector)
 {
     if (selector == null)
     {
         return(BeginTransaction(session, SINGLE_USE, true));
     }
     // TODO: Check that the selected transaction actually belongs to the given session.
     return(selector.SelectorCase switch
     {
         TransactionSelector.SelectorOneofCase.SingleUse => BeginTransaction(session, selector.SingleUse, true),
         TransactionSelector.SelectorOneofCase.Begin => BeginTransaction(session, selector.Begin, false),
         TransactionSelector.SelectorOneofCase.Id => TryFindTransaction(selector.Id),
         _ => null,
     });
        /*
         * Probe to test PartitionQuery and PartitionRead grpc call from Spanner stub.
         *
         * Args:
         *  stub: An object of SpannerStub.
         *  metrics: A list of metrics.
         */

        public static void partition(Spanner.SpannerClient client, ref Dictionary <string, long> metrics)
        {
            long latency;

            //Start Session
            Session session = StartSession(client);

            TransactionOptions txn_options = new TransactionOptions();

            TransactionOptions.Types.ReadOnly ro = new TransactionOptions.Types.ReadOnly();
            txn_options.ReadOnly = ro;
            TransactionSelector txn_selector = new TransactionSelector();

            txn_selector.Begin = txn_options;

            //Probing PartitionQuery call
            PartitionQueryRequest ptn_query_request = new PartitionQueryRequest();

            ptn_query_request.Session     = session.Name;
            ptn_query_request.Sql         = "select * FROM users";
            ptn_query_request.Transaction = txn_selector;

            stopwatch.Start();
            client.PartitionQuery(ptn_query_request);
            stopwatch.Stop();
            latency = stopwatch.ElapsedMilliseconds;
            metrics.Add("partition_query_latency_ms", latency);

            //Probing PartitionRead Call
            PartitionReadRequest ptn_read_request = new PartitionReadRequest();

            ptn_read_request.Session     = session.Name;
            ptn_read_request.Table       = "users";
            ptn_read_request.Transaction = txn_selector;
            KeySet keyset = new KeySet();

            keyset.All = true;
            ptn_read_request.KeySet = keyset;
            stopwatch.Start();
            client.PartitionRead(ptn_read_request);
            stopwatch.Stop();
            latency = stopwatch.ElapsedMilliseconds;
            metrics.Add("partition_read_latency_ms", latency);

            //Delete Session
            EndSession(client, session);
        }
Beispiel #3
0
 public ActionResult GetAll([FromQuery] TransactionSelector seletor)
 {
     try
     {
         if (seletor.PaymentType == null)
         {
             return(Json(_mapper.Map <IEnumerable>(_transactionSevice.GetAll())));
         }
         else
         {
             return(Json(_mapper.Map <IEnumerable>(_transactionSevice.Get(seletor))));
         }
     }
     catch (Exception ex)
     {
         return(StatusCode(500, new ResponseViewModel(ex.Message)));
     }
 }
Beispiel #4
0
 public IEnumerable <TransactionEntity> Get(TransactionSelector selector)
 {
     return(_transactionRepository.Get(selector));
 }