From 48e04b636b60f6b0faac683815b3c7419f092d31 Mon Sep 17 00:00:00 2001 From: Alexey Rybalchenko Date: Thu, 11 Jul 2019 17:46:42 +0200 Subject: [PATCH] Initialize initialization timeout in InitWrapper() --- fairmq/FairMQDevice.cxx | 10 +++++----- fairmq/FairMQDevice.h | 1 + 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/fairmq/FairMQDevice.cxx b/fairmq/FairMQDevice.cxx index c1493798..18ba6a86 100644 --- a/fairmq/FairMQDevice.cxx +++ b/fairmq/FairMQDevice.cxx @@ -104,6 +104,7 @@ FairMQDevice::FairMQDevice(ProgOptions* config, const tools::Version version) , fVersion(version) , fRate(DefaultRate) , fMaxRunRuntimeInS(DefaultMaxRunTime) + , fInitializationTimeoutInS(DefaultInitTimeout) , fRawCmdLineArgs() { SubscribeToNewTransition("device", [&](Transition transition) { @@ -204,6 +205,7 @@ void FairMQDevice::InitWrapper() fRate = fConfig->GetProperty("rate", DefaultRate); fMaxRunRuntimeInS = fConfig->GetProperty("max-run-time", DefaultMaxRunTime); + fInitializationTimeoutInS = fConfig->GetProperty("init-timeout", DefaultInitTimeout); try { fDefaultTransportType = fair::mq::TransportTypes.at(fConfig->GetProperty("transport", DefaultTransportName)); @@ -280,12 +282,10 @@ void FairMQDevice::BindWrapper() void FairMQDevice::ConnectWrapper() { - int initializationTimeoutInS = fConfig->GetProperty("init-timeout", DefaultInitTimeout); - // go over the list of channels until all are initialized (and removed from the uninitialized list) int numAttempts = 1; auto sleepTimeInMS = 50; - auto maxAttempts = initializationTimeoutInS * 1000 / sleepTimeInMS; + auto maxAttempts = fInitializationTimeoutInS * 1000 / sleepTimeInMS; // first attempt AttachChannels(fUninitializedConnectingChannels); // if not all channels could be connected, update their address values from config and retry @@ -301,8 +301,8 @@ void FairMQDevice::ConnectWrapper() } if (numAttempts++ > maxAttempts) { - LOG(error) << "could not connect all channels after " << initializationTimeoutInS << " attempts"; - throw runtime_error(tools::ToString("could not connect all channels after ", initializationTimeoutInS, " attempts")); + LOG(error) << "could not connect all channels after " << fInitializationTimeoutInS << " attempts"; + throw runtime_error(tools::ToString("could not connect all channels after ", fInitializationTimeoutInS, " attempts")); } AttachChannels(fUninitializedConnectingChannels); diff --git a/fairmq/FairMQDevice.h b/fairmq/FairMQDevice.h index a9f2c41d..a6ab6da2 100644 --- a/fairmq/FairMQDevice.h +++ b/fairmq/FairMQDevice.h @@ -576,6 +576,7 @@ class FairMQDevice const fair::mq::tools::Version fVersion; float fRate; ///< Rate limiting for ConditionalRun uint64_t fMaxRunRuntimeInS; ///< Maximum runtime for the Running state handler, after which state will change to Ready (in seconds, 0 for no limit). + int fInitializationTimeoutInS; std::vector fRawCmdLineArgs; std::queue fStates;