pub trait SinkCommitCoordinator {
    // Required methods
    fn init<'life0, 'async_trait>(
        &'life0 mut self,
        subscriber: SinkCommittedEpochSubscriber,
    ) -> Pin<Box<dyn Future<Output = Result<Option<u64>>> + Send + 'async_trait>>
       where Self: 'async_trait,
             'life0: 'async_trait;
    fn commit<'life0, 'async_trait>(
        &'life0 mut self,
        epoch: u64,
        metadata: Vec<SinkMetadata>,
        add_columns: Option<Vec<Field>>,
    ) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>
       where Self: 'async_trait,
             'life0: 'async_trait;
}Required Methods§
Sourcefn init<'life0, 'async_trait>(
    &'life0 mut self,
    subscriber: SinkCommittedEpochSubscriber,
) -> Pin<Box<dyn Future<Output = Result<Option<u64>>> + Send + 'async_trait>>where
    Self: 'async_trait,
    'life0: 'async_trait,
 
fn init<'life0, 'async_trait>(
    &'life0 mut self,
    subscriber: SinkCommittedEpochSubscriber,
) -> Pin<Box<dyn Future<Output = Result<Option<u64>>> + Send + 'async_trait>>where
    Self: 'async_trait,
    'life0: 'async_trait,
Initialize the sink committer coordinator, return the log store rewind start offset.
Sourcefn commit<'life0, 'async_trait>(
    &'life0 mut self,
    epoch: u64,
    metadata: Vec<SinkMetadata>,
    add_columns: Option<Vec<Field>>,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
    Self: 'async_trait,
    'life0: 'async_trait,
 
fn commit<'life0, 'async_trait>(
    &'life0 mut self,
    epoch: u64,
    metadata: Vec<SinkMetadata>,
    add_columns: Option<Vec<Field>>,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
    Self: 'async_trait,
    'life0: 'async_trait,
After collecting the metadata from each sink writer, a coordinator will call commit with
the set of metadata. The metadata is serialized into bytes, because the metadata is expected
to be passed between different gRPC node, so in this general trait, the metadata is
serialized bytes.