For trident the hive writer is flushed only after it hits the batch size.
Trident HiveState does not flush during the batch commit and it appears to be an oversight. Without this trident state cannot guarantee at-least once. (E.g. if the transaction is open but trident moves to the next txid and later fails the data in the open transaction is lost).
So I think for at-least once, the HiveState must flush all the writers irrespective of the batch sizes when trident invokes the "commit(txid)" .