| // Licensed to the Apache Software Foundation (ASF) under one |
| // or more contributor license agreements. See the NOTICE file |
| // distributed with this work for additional information |
| // regarding copyright ownership. The ASF licenses this file |
| // to you under the Apache License, Version 2.0 (the |
| // "License"); you may not use this file except in compliance |
| // with the License. You may obtain a copy of the License at |
| // |
| // http://www.apache.org/licenses/LICENSE-2.0 |
| // |
| // Unless required by applicable law or agreed to in writing, |
| // software distributed under the License is distributed on an |
| // "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| // KIND, either express or implied. See the License for the |
| // specific language governing permissions and limitations |
| // under the License. |
| syntax = "proto2"; |
| package kudu.transactions; |
| |
| option java_package = "org.apache.kudu.transactions"; |
| |
| enum TxnStatePB { |
| UNKNOWN = 0; |
| OPEN = 1; |
| ABORTED = 2; |
| COMMIT_IN_PROGRESS = 3; |
| COMMITTED = 4; |
| } |
| |
| // TODO(awong): this is a bare-bones implementation so far. We'll certainly |
| // need more fields as we build out the rest of the transaction workflow (e.g. |
| // commmit timestamps, etc). |
| // |
| // Metadata encapsulating the status of a transaction. |
| message TxnStatusEntryPB { |
| optional TxnStatePB state = 1; |
| optional string user = 2; |
| } |
| |
| // Metadata encapsulating the existence of a transaction participant. |
| message TxnParticipantEntryPB { |
| optional TxnStatePB state = 1; |
| } |
| |
| // High-level metadata about a transaction. Serialized messages of this type |
| // are used to pass information on an already opened transaction among multiple |
| // Kudu clients (even if residing on different nodes), so they can issue write |
| // operations in the context of the same multi-row distributed transaction. |
| message TxnTokenPB { |
| // Transaction identifier assigned to the transaction. |
| optional int64 txn_id = 1; |
| |
| // The keep-alive interval (in milliseconds) to keep the transaction alive. |
| // To avoid auto-aborting the transaction, TxnManager should receive |
| // keep-alive heartbeats spaced by intervals equal or shorter than |
| // 'keepalive_millis' milliseconds in duration. |
| optional uint32 keepalive_millis = 2; |
| |
| // Whether the client should automatically send keepalive messages once |
| // this token is deserialized into a runtime transaction handle. |
| optional bool enable_keepalive = 3; |
| } |