[ 
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)

Reply via email to