[ https://issues.apache.org/jira/browse/FLINK-25173?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Jingsong Lee updated FLINK-25173: --------------------------------- Description: Currently, only HiveCatalog can provide this catalog lock. {code:java} /** * An interface that allows source and sink to use global lock to some transaction-related things. */ @Internal public interface CatalogLock extends Closeable { /** Run with catalog lock. The caller should tell catalog the database and table name. */ <T> T runWithLock(String database, String table, Callable<T> callable) throws Exception; /** Factory to create {@link CatalogLock}. */ interface Factory extends Serializable { CatalogLock create(); } } {code} And we need a interface to set lock to source&sink by catalog: {code:java} /** * Source and sink implement this interface if they require {@link CatalogLock}. This is marked as * internal. If we need lock to be more general, we can put lock factory into {@link * DynamicTableFactory.Context}. */ @Internal public interface RequireCatalogLock { void setLockFactory(CatalogLock.Factory lockFactory); } {code} {{}} was: {panel} {panel} |{{/**}} {{ }}{{* An interface that allows source and sink to use global lock to some transaction-related things.}} {{ }}{{*/}} {{@Internal}} {{public}} {{interface}} {{CatalogLock }}{{extends}} {{Closeable {}} {{ }}{{/** Run with catalog lock. The caller should tell catalog the database and table name. */}} {{ }}{{<T> T runWithLock(String database, String table, Callable<T> callable) }}{{throws}} {{Exception;}} {{ }}{{/** Factory to create \{@link CatalogLock}. */}} {{ }}{{interface}} {{Factory }}{{extends}} {{Serializable {}} {{ }}{{CatalogLock create();}} {{ }}{{}}} {{}}}| Currently, only HiveCatalog can provide this catalog lock. > Introduce CatalogLock > --------------------- > > Key: FLINK-25173 > URL: https://issues.apache.org/jira/browse/FLINK-25173 > Project: Flink > Issue Type: Sub-task > Components: Connectors / Hive, Table SQL / API > Reporter: Jingsong Lee > Priority: Major > Fix For: 1.15.0 > > > Currently, only HiveCatalog can provide this catalog lock. > {code:java} > /** > * An interface that allows source and sink to use global lock to some > transaction-related things. > */ > @Internal > public interface CatalogLock extends Closeable { > > /** Run with catalog lock. The caller should tell catalog the database > and table name. */ > <T> T runWithLock(String database, String table, Callable<T> callable) > throws Exception; > > /** Factory to create {@link CatalogLock}. */ > interface Factory extends Serializable { > CatalogLock create(); > } > } {code} > And we need a interface to set lock to source&sink by catalog: > {code:java} > /** > * Source and sink implement this interface if they require {@link > CatalogLock}. This is marked as > * internal. If we need lock to be more general, we can put lock factory into > {@link > * DynamicTableFactory.Context}. > */ > @Internal > public interface RequireCatalogLock { > > void setLockFactory(CatalogLock.Factory lockFactory); > } {code} > {{}} -- This message was sent by Atlassian Jira (v8.20.1#820001)