[ 
https://issues.apache.org/jira/browse/HIVE-12307?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15025266#comment-15025266
 ] 

Eugene Koifman commented on HIVE-12307:
---------------------------------------

bq. I'm +1 on making this package level, but does it do any good to make the 
class non-private and leave the constructor private?
The class is made package level for testing only.  Private c'tor ensures that 
it's only constructed via factory methods as originally implemented.
bq. Why did you make the isClosed value volatile? 
heartbeating is commonly done from separate thread, for example, Storm does it 
this way.  Also, it's not unusual for  application clean up logic to come from 
a different thread (for example calling close() as a form of cancel).  So this 
is volatile to make sure this works properly regardless of how the client is 
implemented.
I didn't try any more general thread safety issues in this patch.  Judging by 
https://cwiki.apache.org/confluence/display/Hive/Streaming+Data+Ingest#StreamingDataIngest-Example–Non-secureMode
 the original intent was to NOT to have multiple threads in a 
StreamingConnection.  It's worthwhile to do a thread safety review but was not 
my goal here.  

bq. write()
I'll refactor this



bq. SerializationError
This is was meant to indicate that a particular row is bad.  For example 
missing columns, etc.  This gives the client ability to drop this row (or send 
to dead letter queue) since replaying it won't help.  Unfortunately, w/o my 
changes here the client never sees SerializationError - it gets wrapped in 
other exceptions.
bq. abortImpl()
there is https://issues.apache.org/jira/browse/HIVE-12440 for that

> Streaming API TransactionBatch.close() must abort any remaining transactions 
> in the batch
> -----------------------------------------------------------------------------------------
>
>                 Key: HIVE-12307
>                 URL: https://issues.apache.org/jira/browse/HIVE-12307
>             Project: Hive
>          Issue Type: Bug
>          Components: HCatalog, Transactions
>    Affects Versions: 0.14.0
>            Reporter: Eugene Koifman
>            Assignee: Eugene Koifman
>         Attachments: HIVE-12307.patch
>
>
> When the client of TransactionBatch API encounters an error it must close() 
> the batch and start a new one.  This prevents attempts to continue writing to 
> a file that may damaged in some way.
> The close() should ensure to abort the any txns that still remain in the 
> batch and close (best effort) all the files it's writing to.  The batch 
> should also put itself into a mode where any future ops on this batch fail.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to