[
https://issues.apache.org/jira/browse/FLINK-40149?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
ASF GitHub Bot updated FLINK-40149:
-----------------------------------
Labels: pull-request-available (was: )
> Rename lookup option asyncPolling to async-polling for Flink naming
> consistency
> -------------------------------------------------------------------------------
>
> Key: FLINK-40149
> URL: https://issues.apache.org/jira/browse/FLINK-40149
> Project: Flink
> Issue Type: Improvement
> Reporter: Bharath Reddy Gunapati
> Priority: Minor
> Labels: pull-request-available
>
> h2. Problem
> The HTTP lookup connector exposes a boolean option to choose sync vs async
> lookup
> behavior. It is declared as:
> {code:java}
> public static final ConfigOption<Boolean> ASYNC_POLLING =
> ConfigOptions.key("asyncPolling")
> .booleanType()
> .defaultValue(false)
> .withDescription("Whether to use Sync and Async polling
> mechanism");
> {code}
> The option works correctly and is fully wired at runtime. The issue is naming
> inconsistency, not behavior:
> * It is the only camelCase table option in the HTTP connector. All other
> options
> use kebab-case or dotted keys (e.g. lookup-method, url-args,
> http.source.lookup.request.timeout).
> * This diverges from Flink connector conventions (Kafka, JDBC, etc.), where
> table
> options are consistently kebab-case.
> h2. Current behavior (live, not dead config)
> The option is actively used end to end:
> * HttpLookupTableSourceFactory registers ASYNC_POLLING in optionalOptions()
> and
> reads readableConfig.get(ASYNC_POLLING) into HttpLookupConfig.useAsync.
> * HttpLookupTableSource branches on useAsync:
> ** true -> AsyncHttpTableLookupFunction (Flink Async I/O)
> ** false -> blocking HttpTableLookupFunction
> * GenericJsonQueryCreatorFactory and GenericJsonAndUrlQueryCreatorFactory
> also
> branch on ASYNC_POLLING.
> Example DDL today:
> {code:sql}
> CREATE TABLE lookup_table (...) WITH (
> 'connector' = 'http',
> 'format' = 'json',
> 'url' = 'http://localhost:8080/api',
> 'asyncPolling' = 'true'
> );
> {code}
> h2. Proposed change
> Rename the canonical key to async-polling and keep asyncPolling as a
> deprecated
> alias using Flink's standard mechanism:
> {code:java}
> public static final ConfigOption<Boolean> ASYNC_POLLING =
> ConfigOptions.key("async-polling")
> .booleanType()
> .defaultValue(false)
> .withDeprecatedKeys("asyncPolling")
> .withDescription("Whether to use sync or async polling
> mechanism");
> {code}
> No runtime logic change. Only the canonical key string and documentation
> change.
> h2. Scope of code / doc updates
> * HttpLookupConnectorOptions.java - rename key + withDeprecatedKeys
> * docs/content/docs/connectors/table/http.md - option table and examples
> * docs/content.zh/docs/connectors/table/http.md - same
> * Tests and examples - prefer async-polling; add or keep one test proving
> asyncPolling still works via deprecated alias
> h2. Compatibility
> * Backward compatible: existing DDL using asyncPolling continues to work via
> withDeprecatedKeys.
> * No change to default (false) or runtime behavior.
> * Release note should mention the new canonical name and that asyncPolling is
> deprecated.
> h2. Acceptance criteria
> * Canonical key is async-polling
> * asyncPolling accepted via withDeprecatedKeys
> * Docs and examples updated to async-polling
> * At least one test verifies deprecated alias still works
> * Default remains false; sync/async runtime behavior unchanged
--
This message was sent by Atlassian Jira
(v8.20.10#820010)