From d81fedb9554642e32c5ba0c266cd5c68667587ff Mon Sep 17 00:00:00 2001 From: Matthew Tovbin Date: Fri, 26 Oct 2018 22:01:36 -0700 Subject: [PATCH] [jvm-packages] RabitTracker for Scala: allow specifying host ip from the xgboost-tracker.properties file (#3833) --- .../scala/ml/dmlc/xgboost4j/scala/rabit/RabitTracker.scala | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/jvm-packages/xgboost4j/src/main/scala/ml/dmlc/xgboost4j/scala/rabit/RabitTracker.scala b/jvm-packages/xgboost4j/src/main/scala/ml/dmlc/xgboost4j/scala/rabit/RabitTracker.scala index 00cef158d..36ad18bb8 100644 --- a/jvm-packages/xgboost4j/src/main/scala/ml/dmlc/xgboost4j/scala/rabit/RabitTracker.scala +++ b/jvm-packages/xgboost4j/src/main/scala/ml/dmlc/xgboost4j/scala/rabit/RabitTracker.scala @@ -20,7 +20,7 @@ import java.net.{InetAddress, InetSocketAddress} import akka.actor.ActorSystem import akka.pattern.ask -import ml.dmlc.xgboost4j.java.IRabitTracker +import ml.dmlc.xgboost4j.java.{IRabitTracker, TrackerProperties} import ml.dmlc.xgboost4j.scala.rabit.handler.RabitTrackerHandler import scala.concurrent.duration._ @@ -93,8 +93,11 @@ private[scala] class RabitTracker(numWorkers: Int, port: Option[Int] = None, * @return Boolean flag indicating if the Rabit tracker starts successfully. */ private def start(timeout: Duration): Boolean = { + val hostAddress = Option(TrackerProperties.getInstance().getHostIp) + .map(InetAddress.getByName).getOrElse(InetAddress.getLocalHost) + handler ? RabitTrackerHandler.StartTracker( - new InetSocketAddress(InetAddress.getLocalHost, port.getOrElse(0)), maxPortTrials, timeout) + new InetSocketAddress(hostAddress, port.getOrElse(0)), maxPortTrials, timeout) // block by waiting for the actor to bind to a port Try(Await.result(handler ? RabitTrackerHandler.RequestBoundFuture, askTimeout.duration)