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

Rosa Seohwa Kang updated FLINK-38109:
-------------------------------------
    Environment:     (was: 
!image-2025-07-16-18-23-30-302.png|width=654,height=135!)

> BlobServer isn't associated with the correct bind-host
> ------------------------------------------------------
>
>                 Key: FLINK-38109
>                 URL: https://issues.apache.org/jira/browse/FLINK-38109
>             Project: Flink
>          Issue Type: Bug
>          Components: Runtime / Coordination
>    Affects Versions: 1.11.0
>            Reporter: Rosa Seohwa Kang
>            Priority: Minor
>
> In a flink cluster, if the JobManager bind-host is configured with an 
> address, this creates a mismatch where clients expect to connect to 
> BlobServer at same address, but it's actually bound to localhost. The 
> BlobServer becomes unreachable to clients, causing "Could not connect to 
> BlobServer" errors.
> This can be reproduced when uploading a JAR file to the cluster for UDF 
> registration, and configuring the JobManager bind-host to an external address.
> Example:
> ```
> package com.shopify.flink.examples.functions.asynchttpfunction;
>  
> import org.apache.flink.configuration.Configuration;
> import org.apache.flink.configuration.RestOptions;
> import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;
> import org.apache.flink.table.api.bridge.java.StreamTableEnvironment;
>  
> public class RosaTestFunction {
>     public static void main(final String[] args) throws Exception {
>         
>         // Configuration for connecting to the local session cluster
>         final Configuration configuration = new Configuration();
>  
>         // Configure REST client to connect to the local session cluster
>         configuration.set(RestOptions.ADDRESS, 
> "flink-examples-flinkbook.root.shopify.dev.internal");
>         configuration.set(RestOptions.PORT, 7100);  // REST API port
>  
> configuration.setString("jobmanager.bind-host", 
> "flink-examples-flinkbook.root.shopify.dev.internal");
> configuration.setString("taskmanager.bind-host", 
> "flink-examples-flinkbook.root.shopify.dev.internal");
>  
>         StreamExecutionEnvironment env = 
> StreamExecutionEnvironment.getExecutionEnvironment(configuration);
>         StreamTableEnvironment tableEnv = StreamTableEnvironment.create(env);
>  
>         tableEnv.executeSql("""
>                 CREATE FUNCTION example_custom
>                 AS 'com.shopify.flink.examples.shared.ExampleCustomFunction'
>                 LANGUAGE JAVA
>                 USING JAR 
> 'file:///Users/rosa/src/github.com/Shopify/flink-examples/sql/pipelines/flinksql-example/jars/shared.jar';""");
>  
>         tableEnv.executeSql("SELECT example_custom(1,2) as 
> sum_result;").print();
>     }
> }
> ```
> Root cause:
> The BlobServer bind-host is set to use the Jobmanager bind-host, however 
> isn't assigned the correct host in the PekkoRpcService.
> [BlobServer.java](https://github.com/apache/flink/blob/master/flink-runtime/src/main/java/org/apache/flink/runtime/blob/BlobServer.java#L218-L220)
> ```
> String bindHost = 
> (String)config.getOptional(JobManagerOptions.BIND_HOST).orElseGet(NetUtils::getWildcardIPAddress);
> ```
> [PekkoRpcService.java](https://github.com/apache/flink/blob/master/flink-rpc/flink-rpc-akka/src/main/java/org/apache/flink/runtime/rpc/pekko/PekkoRpcService.java#L477-L486)
> ```
>     private Tuple2<String, String> extractAddressHostname(ActorRef actorRef) {
>         final String actorAddress = PekkoUtils.getRpcURL(actorSystem, 
> actorRef);
>         final String hostname;
>         Option<String> host = actorRef.path().address().host();
>         if (host.isEmpty()) {
>             hostname = "localhost";
>         } else {
>             hostname = host.get();
>         }
>         return Tuple2.of(actorAddress, hostname);
>     }
> ```
>  
> Proposed solution:
> Add a `blob.server.bind-host` configuration option similar to the existing 
> bind-host solution introduced in 
> [FLINK-15911](https://issues.apache.org/jira/browse/FLINK-15911).
>  



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to