There has been some discussion about handling different durability guarantees better than the present solution, which is to document that flush may not do anything. There are 3 options: remove flush/sync, allow flush/sync to throw UnsupportedOperationException and add isFlushable/isSyncable, or to remove flush/sync from the DatasetWriter and add a Flushable interface that can be used to signal a durability guarantee.
This issue is to implement the third option:
1. Deprecate flush and sync on DatasetWriter
2. Add a Flushable interface with a durability guarantee (records are persisted)
Follow-up to this issue will be to remove the flush and sync methods.