[ 
https://issues.apache.org/jira/browse/BEAM-14202?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Kenneth Knowles updated BEAM-14202:
-----------------------------------
    Status: Open  (was: Triage Needed)

> SpannerConfig does not respect SPANNER_EMULATOR_HOST
> ----------------------------------------------------
>
>                 Key: BEAM-14202
>                 URL: https://issues.apache.org/jira/browse/BEAM-14202
>             Project: Beam
>          Issue Type: Bug
>          Components: io-java-gcp
>    Affects Versions: 2.37.0
>            Reporter: Andrew Jorgensen
>            Priority: P2
>             Fix For: Not applicable
>
>
> [com.google.cloud.spanner.SpannerOptions|https://github.com/googleapis/java-spanner/blob/main/google-cloud-spanner/src/main/java/com/google/cloud/spanner/SpannerOptions.java]
>  has to determine if the configuration should use the emulator or not. 
> Essentially it will look for SPANNER_EMULATOR_HOST in the environment and if 
> a spanner host is not explicitly set it will set the host as the emulator, 
> [see 
> here|[https://github.com/googleapis/java-spanner/blob/main/google-cloud-spanner/src/main/java/com/google/cloud/spanner/SpannerOptions.java#L1143-L1153]
> By Contrast in Beam, SpannerConfig by default has a host set ([see 
> here|[https://github.com/apache/beam/blob/master/sdks/java/io/google-cloud-platform/src/main/java/org/apache/beam/sdk/io/gcp/spanner/SpannerConfig.java#L83]).
>  When Beam goes to convert SpannerConfig to SpannerOptions in SpannerAccessor 
> it will always call setHost on SpannerOptions which will set the emulatorHost 
> to null, [see 
> here|https://github.com/apache/beam/blob/47ab260aaad6b1014d86dd6cf9274f1045690631/sdks/java/io/google-cloud-platform/src/main/java/org/apache/beam/sdk/io/gcp/spanner/SpannerAccessor.java#L173-L176].
>  
> The consequence of this is the SpannerAccessor will always ignore the 
> SPANNER_EMULATOR_HOST environment variable unless withEmulatorHost is called 
> explicitly on SpannerConfig. Ultimately this pushes the responsibility onto 
> the user to manually check for the environment variable and conditionally set 
> it rather than relying on the functionality that already exists in the 
> underlying SpannerOptions provided by the spanner sdk.
> I think the solution would be for Beam to also check to see if 
> SPANNER_EMULATOR_HOST is set and then fall back to the provided host or the 
> DEFAULT_HOST in the event that we are not connecting to the emulator.



--
This message was sent by Atlassian Jira
(v8.20.7#820007)

Reply via email to