diff --git a/apps/emqx_bridge_gcp_pubsub/src/emqx_bridge_gcp_pubsub_producer_schema.erl b/apps/emqx_bridge_gcp_pubsub/src/emqx_bridge_gcp_pubsub_producer_schema.erl index eec7bff5b..3c4588c52 100644 --- a/apps/emqx_bridge_gcp_pubsub/src/emqx_bridge_gcp_pubsub_producer_schema.erl +++ b/apps/emqx_bridge_gcp_pubsub/src/emqx_bridge_gcp_pubsub_producer_schema.erl @@ -81,7 +81,20 @@ fields("config_connector") -> emqx_connector_schema:common_fields() ++ connector_config_fields(); fields(connector_resource_opts) -> - emqx_connector_schema:resource_opts_fields(); + %% for backwards compatibility... + Fields = proplists:get_keys(emqx_connector_schema:resource_opts_fields()), + AllFields = proplists:get_keys(emqx_resource_schema:create_opts([])), + DeprecatedFields = AllFields -- Fields, + Overrides = lists:map( + fun(Field) -> + {Field, #{ + importance => ?IMPORTANCE_HIDDEN, + deprecated => {since, "5.5.0"} + }} + end, + DeprecatedFields + ), + emqx_resource_schema:create_opts(Overrides); %%========================================= %% HTTP API fields: action %%========================================= diff --git a/apps/emqx_bridge_gcp_pubsub/test/emqx_bridge_gcp_pubsub_producer_SUITE.erl b/apps/emqx_bridge_gcp_pubsub/test/emqx_bridge_gcp_pubsub_producer_SUITE.erl index bb9ad7cda..e030bbc74 100644 --- a/apps/emqx_bridge_gcp_pubsub/test/emqx_bridge_gcp_pubsub_producer_SUITE.erl +++ b/apps/emqx_bridge_gcp_pubsub/test/emqx_bridge_gcp_pubsub_producer_SUITE.erl @@ -1898,3 +1898,40 @@ t_bad_attributes(Config) -> end ), ok. + +t_deprecated_connector_resource_opts(Config) -> + ?check_trace( + begin + ServiceAccountJSON = ?config(service_account_json, Config), + AllResOpts = #{ + <<"batch_size">> => 1, + <<"batch_time">> => <<"0ms">>, + <<"buffer_mode">> => <<"memory_only">>, + <<"buffer_seg_bytes">> => <<"10MB">>, + <<"health_check_interval">> => <<"15s">>, + <<"inflight_window">> => 100, + <<"max_buffer_bytes">> => <<"256MB">>, + <<"metrics_flush_interval">> => <<"1s">>, + <<"query_mode">> => <<"sync">>, + <<"request_ttl">> => <<"45s">>, + <<"resume_interval">> => <<"15s">>, + <<"start_after_created">> => true, + <<"start_timeout">> => <<"5s">>, + <<"worker_pool_size">> => <<"1">> + }, + RawConnectorConfig = #{ + <<"enable">> => true, + <<"service_account_json">> => ServiceAccountJSON, + <<"resource_opts">> => AllResOpts + }, + ?assertMatch( + {ok, _}, + emqx:update_config([connectors, ?CONNECTOR_TYPE, c], RawConnectorConfig, #{}) + ), + ok + end, + fun(_Trace) -> + ok + end + ), + ok.