HIVE-14778 document threading model of Streaming API (Eugene Koifman, reviewed by Alan Gates)
Project: http://git-wip-us.apache.org/repos/asf/hive/repo Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/20304c07 Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/20304c07 Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/20304c07 Branch: refs/heads/repl2 Commit: 20304c0705c4ad861b5915dacceaa6d6bdfe91fc Parents: d16d4f1 Author: Eugene Koifman <ekoif...@hortonworks.com> Authored: Thu Sep 29 10:41:42 2016 -0700 Committer: Eugene Koifman <ekoif...@hortonworks.com> Committed: Thu Sep 29 10:41:42 2016 -0700 ---------------------------------------------------------------------- .../apache/hive/hcatalog/streaming/StreamingConnection.java | 2 ++ .../org/apache/hive/hcatalog/streaming/TransactionBatch.java | 8 ++++++-- 2 files changed, 8 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hive/blob/20304c07/hcatalog/streaming/src/java/org/apache/hive/hcatalog/streaming/StreamingConnection.java ---------------------------------------------------------------------- diff --git a/hcatalog/streaming/src/java/org/apache/hive/hcatalog/streaming/StreamingConnection.java b/hcatalog/streaming/src/java/org/apache/hive/hcatalog/streaming/StreamingConnection.java index 8785a21..a8f4089 100644 --- a/hcatalog/streaming/src/java/org/apache/hive/hcatalog/streaming/StreamingConnection.java +++ b/hcatalog/streaming/src/java/org/apache/hive/hcatalog/streaming/StreamingConnection.java @@ -22,6 +22,8 @@ import org.apache.hadoop.security.UserGroupInformation; /** * Represents a connection to a HiveEndPoint. Used to acquire transaction batches. + * Note: the expectation is that there is at most 1 TransactionBatch outstanding for any given + * StreamingConnection. Violating this may result in "out of sequence response". */ public interface StreamingConnection { http://git-wip-us.apache.org/repos/asf/hive/blob/20304c07/hcatalog/streaming/src/java/org/apache/hive/hcatalog/streaming/TransactionBatch.java ---------------------------------------------------------------------- diff --git a/hcatalog/streaming/src/java/org/apache/hive/hcatalog/streaming/TransactionBatch.java b/hcatalog/streaming/src/java/org/apache/hive/hcatalog/streaming/TransactionBatch.java index 3c8670d..3bcc510 100644 --- a/hcatalog/streaming/src/java/org/apache/hive/hcatalog/streaming/TransactionBatch.java +++ b/hcatalog/streaming/src/java/org/apache/hive/hcatalog/streaming/TransactionBatch.java @@ -24,8 +24,12 @@ import java.util.Collection; /** * Represents a set of Transactions returned by Hive. Supports opening, writing to * and commiting/aborting each transaction. The interface is designed to ensure - * transactions in a batch are used up sequentially. Multiple transaction batches can be - * used (initialized with separate RecordWriters) for concurrent streaming + * transactions in a batch are used up sequentially. To stream to the same HiveEndPoint + * concurrently, create separate StreamingConnections. + * + * Note on thread safety: At most 2 threads can run through a given TransactionBatch at the same + * time. One thread may call {@link #heartbeat()} and the other all other methods. + * Violating this may result in "out of sequence response". * */ public interface TransactionBatch {