CallContextConfigurator can be used to modify the ApiCallContext for one or
more specific RPCs. This can be used to set specific timeout value for RPCs or use specific
CallCredentials for an RPC. The CallContextConfigurator must be set as a value
on the Context using the SpannerOptions#CALL_CONTEXT_CONFIGURATOR_KEY key.
This API is meant for advanced users. Most users should instead use the SpannerCallContextTimeoutConfigurator for setting timeouts per RPC.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Hard to understand","hardToUnderstand","thumb-down"],["Incorrect information or sample code","incorrectInformationOrSampleCode","thumb-down"],["Missing the information/samples I need","missingTheInformationSamplesINeed","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-08-28 UTC."],[],[],null,["# Interface SpannerOptions.CallContextConfigurator (6.98.1)\n\nVersion latestkeyboard_arrow_down\n\n- [6.98.1 (latest)](/java/docs/reference/google-cloud-spanner/latest/com.google.cloud.spanner.SpannerOptions.CallContextConfigurator)\n- [6.98.0](/java/docs/reference/google-cloud-spanner/6.98.0/com.google.cloud.spanner.SpannerOptions.CallContextConfigurator)\n- [6.97.1](/java/docs/reference/google-cloud-spanner/6.97.1/com.google.cloud.spanner.SpannerOptions.CallContextConfigurator)\n- [6.96.1](/java/docs/reference/google-cloud-spanner/6.96.1/com.google.cloud.spanner.SpannerOptions.CallContextConfigurator)\n- [6.95.1](/java/docs/reference/google-cloud-spanner/6.95.1/com.google.cloud.spanner.SpannerOptions.CallContextConfigurator)\n- [6.94.0](/java/docs/reference/google-cloud-spanner/6.94.0/com.google.cloud.spanner.SpannerOptions.CallContextConfigurator)\n- [6.93.0](/java/docs/reference/google-cloud-spanner/6.93.0/com.google.cloud.spanner.SpannerOptions.CallContextConfigurator)\n- [6.89.0](/java/docs/reference/google-cloud-spanner/6.89.0/com.google.cloud.spanner.SpannerOptions.CallContextConfigurator)\n- [6.88.0](/java/docs/reference/google-cloud-spanner/6.88.0/com.google.cloud.spanner.SpannerOptions.CallContextConfigurator)\n- [6.87.0](/java/docs/reference/google-cloud-spanner/6.87.0/com.google.cloud.spanner.SpannerOptions.CallContextConfigurator)\n- [6.86.0](/java/docs/reference/google-cloud-spanner/6.86.0/com.google.cloud.spanner.SpannerOptions.CallContextConfigurator)\n- [6.85.0](/java/docs/reference/google-cloud-spanner/6.85.0/com.google.cloud.spanner.SpannerOptions.CallContextConfigurator)\n- [6.83.0](/java/docs/reference/google-cloud-spanner/6.83.0/com.google.cloud.spanner.SpannerOptions.CallContextConfigurator)\n- [6.82.0](/java/docs/reference/google-cloud-spanner/6.82.0/com.google.cloud.spanner.SpannerOptions.CallContextConfigurator)\n- [6.80.1](/java/docs/reference/google-cloud-spanner/6.80.1/com.google.cloud.spanner.SpannerOptions.CallContextConfigurator)\n- [6.79.0](/java/docs/reference/google-cloud-spanner/6.79.0/com.google.cloud.spanner.SpannerOptions.CallContextConfigurator)\n- [6.77.0](/java/docs/reference/google-cloud-spanner/6.77.0/com.google.cloud.spanner.SpannerOptions.CallContextConfigurator)\n- [6.74.1](/java/docs/reference/google-cloud-spanner/6.74.1/com.google.cloud.spanner.SpannerOptions.CallContextConfigurator)\n- [6.72.0](/java/docs/reference/google-cloud-spanner/6.72.0/com.google.cloud.spanner.SpannerOptions.CallContextConfigurator)\n- [6.71.0](/java/docs/reference/google-cloud-spanner/6.71.0/com.google.cloud.spanner.SpannerOptions.CallContextConfigurator)\n- [6.69.0](/java/docs/reference/google-cloud-spanner/6.69.0/com.google.cloud.spanner.SpannerOptions.CallContextConfigurator)\n- [6.68.0](/java/docs/reference/google-cloud-spanner/6.68.0/com.google.cloud.spanner.SpannerOptions.CallContextConfigurator)\n- [6.66.0](/java/docs/reference/google-cloud-spanner/6.66.0/com.google.cloud.spanner.SpannerOptions.CallContextConfigurator)\n- [6.65.1](/java/docs/reference/google-cloud-spanner/6.65.1/com.google.cloud.spanner.SpannerOptions.CallContextConfigurator)\n- [6.62.0](/java/docs/reference/google-cloud-spanner/6.62.0/com.google.cloud.spanner.SpannerOptions.CallContextConfigurator)\n- [6.60.0](/java/docs/reference/google-cloud-spanner/6.60.0/com.google.cloud.spanner.SpannerOptions.CallContextConfigurator)\n- [6.58.0](/java/docs/reference/google-cloud-spanner/6.58.0/com.google.cloud.spanner.SpannerOptions.CallContextConfigurator)\n- [6.57.0](/java/docs/reference/google-cloud-spanner/6.57.0/com.google.cloud.spanner.SpannerOptions.CallContextConfigurator)\n- [6.56.0](/java/docs/reference/google-cloud-spanner/6.56.0/com.google.cloud.spanner.SpannerOptions.CallContextConfigurator)\n- [6.55.0](/java/docs/reference/google-cloud-spanner/6.55.0/com.google.cloud.spanner.SpannerOptions.CallContextConfigurator)\n- [6.54.0](/java/docs/reference/google-cloud-spanner/6.54.0/com.google.cloud.spanner.SpannerOptions.CallContextConfigurator)\n- [6.53.0](/java/docs/reference/google-cloud-spanner/6.53.0/com.google.cloud.spanner.SpannerOptions.CallContextConfigurator)\n- [6.52.1](/java/docs/reference/google-cloud-spanner/6.52.1/com.google.cloud.spanner.SpannerOptions.CallContextConfigurator)\n- [6.51.0](/java/docs/reference/google-cloud-spanner/6.51.0/com.google.cloud.spanner.SpannerOptions.CallContextConfigurator)\n- [6.50.1](/java/docs/reference/google-cloud-spanner/6.50.1/com.google.cloud.spanner.SpannerOptions.CallContextConfigurator)\n- [6.49.0](/java/docs/reference/google-cloud-spanner/6.49.0/com.google.cloud.spanner.SpannerOptions.CallContextConfigurator)\n- [6.25.1](/java/docs/reference/google-cloud-spanner/6.25.1/com.google.cloud.spanner.SpannerOptions.CallContextConfigurator)\n- [6.24.0](/java/docs/reference/google-cloud-spanner/6.24.0/com.google.cloud.spanner.SpannerOptions.CallContextConfigurator)\n- [6.23.4](/java/docs/reference/google-cloud-spanner/6.23.4/com.google.cloud.spanner.SpannerOptions.CallContextConfigurator)\n- [6.22.0](/java/docs/reference/google-cloud-spanner/6.22.0/com.google.cloud.spanner.SpannerOptions.CallContextConfigurator)\n- [6.21.2](/java/docs/reference/google-cloud-spanner/6.21.2/com.google.cloud.spanner.SpannerOptions.CallContextConfigurator)\n- [6.20.0](/java/docs/reference/google-cloud-spanner/6.20.0/com.google.cloud.spanner.SpannerOptions.CallContextConfigurator)\n- [6.19.1](/java/docs/reference/google-cloud-spanner/6.19.1/com.google.cloud.spanner.SpannerOptions.CallContextConfigurator)\n- [6.18.0](/java/docs/reference/google-cloud-spanner/6.18.0/com.google.cloud.spanner.SpannerOptions.CallContextConfigurator)\n- [6.17.4](/java/docs/reference/google-cloud-spanner/6.17.4/com.google.cloud.spanner.SpannerOptions.CallContextConfigurator)\n- [6.14.1](/java/docs/reference/google-cloud-spanner/6.14.1/com.google.cloud.spanner.SpannerOptions.CallContextConfigurator) \n\n public static interface SpannerOptions.CallContextConfigurator\n\nCallContextConfigurator can be used to modify the [ApiCallContext](https://cloud.google.com/java/docs/reference/gax/latest/com.google.api.gax.rpc.ApiCallContext.html) for one or\nmore specific RPCs. This can be used to set specific timeout value for RPCs or use specific\nCallCredentials for an RPC. The CallContextConfigurator must be set as a value\non the Context using the [SpannerOptions#CALL_CONTEXT_CONFIGURATOR_KEY](/java/docs/reference/google-cloud-spanner/latest/com.google.cloud.spanner.SpannerOptions#com_google_cloud_spanner_SpannerOptions_CALL_CONTEXT_CONFIGURATOR_KEY) key.\n\nThis API is meant for advanced users. Most users should instead use the SpannerCallContextTimeoutConfigurator for setting timeouts per RPC.\n\nExample usage: \n\n\n CallContextConfigurator configurator =\n new CallContextConfigurator() {\n public \u003cReqT, RespT\u003e ApiCallContext configure(\n ApiCallContext context, ReqT request, MethodDescriptor\u003cReqT, RespT\u003e method) {\n if (method == SpannerGrpc.getExecuteBatchDmlMethod()) {\n return GrpcCallContext.createDefault()\n .withCallOptions(CallOptions.DEFAULT.withDeadlineAfter(60L, TimeUnit.SECONDS));\n }\n return null;\n }\n };\n Context context =\n Context.current().withValue(SpannerOptions.CALL_CONTEXT_CONFIGURATOR_KEY, configurator);\n context.run(\n () -\u003e {\n try {\n client\n .readWriteTransaction()\n .run(\n new TransactionCallable\n\nMethods\n-------\n\n### \\\u003cReqT,RespT\\\u003econfigure(ApiCallContext context, ReqT request, MethodDescriptor\\\u003cReqT,RespT\\\u003e method)\n\n public abstract ApiCallContext \u003cReqT,RespT\u003econfigure(ApiCallContext context, ReqT request, MethodDescriptor\u003cReqT,RespT\u003e method)\n\nConfigure a [ApiCallContext](https://cloud.google.com/java/docs/reference/gax/latest/com.google.api.gax.rpc.ApiCallContext.html) for a specific RPC call."]]