// Begin2 should not be used by anything other than tests. // It will eventually replace Begin, but it breaks compatibility with older clients. // Once all clients are upgraded, it can be replaced. func (sq *SqlQuery) Begin2(ctx context.Context, beginRequest *proto.BeginRequest, beginResponse *proto.BeginResponse) (err error) { defer sq.server.HandlePanic(&err) session := &proto.Session{ SessionId: beginRequest.SessionId, } txInfo := new(proto.TransactionInfo) tErr := sq.server.Begin(callinfo.RPCWrapCallInfo(ctx), session, txInfo) // Convert from TxInfo => beginResponse for the output beginResponse.TransactionId = txInfo.TransactionId tabletserver.AddTabletErrorToBeginResponse(tErr, beginResponse) if *tabletserver.RPCErrorOnlyInReply { return nil } return tErr }
// Begin2 should not be used by anything other than tests. // It will eventually replace Begin, but it breaks compatibility with older clients. // Once all clients are upgraded, it can be replaced. func (sq *SqlQuery) Begin2(ctx context.Context, beginRequest *proto.BeginRequest, beginResponse *proto.BeginResponse) (err error) { defer sq.server.HandlePanic(&err) session := &proto.Session{ SessionId: beginRequest.SessionId, } txInfo := new(proto.TransactionInfo) ctx = callerid.NewContext(ctx, callerid.GoRPCEffectiveCallerID(beginRequest.EffectiveCallerID), callerid.GoRPCImmediateCallerID(beginRequest.ImmediateCallerID), ) tErr := sq.server.Begin(callinfo.RPCWrapCallInfo(ctx), proto.TargetToProto3(beginRequest.Target), session, txInfo) // Convert from TxInfo => beginResponse for the output beginResponse.TransactionId = txInfo.TransactionId tabletserver.AddTabletError(tErr, &beginResponse.Err) return nil }
// AddTabletErrorToBeginResponse will mutate a BeginResponse struct to fill in the Err // field with details from the TabletError. func AddTabletErrorToBeginResponse(err error, reply *proto.BeginResponse) { if err == nil { return } reply.Err = rpcErrFromTabletError(err) }