No sentinel server available for autodiscovery.

Trace:

File: /opt/wasabi/vendor/predis/predis/src/Connection/Replication/SentinelReplication.php (Line: 497)

489:    return array_values($this->slaves);

490:   }

491:

492:   if ($this->updateSentinels) {

493:    $this->updateSentinels();

494:   }

495:

496:   SENTINEL_QUERY: {

497:    $sentinel = $this->getSentinelConnection();

498:

499:    try {

500:     $slavesParameters = $this->querySentinelForSlaves($sentinel, $this->service);

501:

502:     foreach ($slavesParameters as $slaveParameters) {

503:      $this->add($this->connectionFactory->create($slaveParameters));

Arguments:

File: /opt/wasabi/vendor/predis/predis/src/Connection/Replication/SentinelReplication.php (Line: 522)

514:

515:  /**

516:   * Returns a random slave.

517:   *

518:   * @return NodeConnectionInterface|null

519:   */

520:  protected function pickSlave()

521:  {

522:   $slaves = $this->getSlaves();

523:

524:   return $slaves

525:    ? $slaves[rand(1, count($slaves)) - 1]

526:    : null;

527:  }

528:

Arguments:

File: /opt/wasabi/vendor/predis/predis/src/Connection/Replication/SentinelReplication.php (Line: 539)

531:   *

532:   * @param CommandInterface $command Command instance.

533:   *

534:   * @return NodeConnectionInterface

535:   */

536:  private function getConnectionInternal(CommandInterface $command)

537:  {

538:   if (!$this->current) {

539:    if ($this->strategy->isReadOperation($command) && $slave = $this->pickSlave()) {

540:     $this->current = $slave;

541:    } else {

542:     $this->current = $this->getMaster();

543:    }

544:

545:    return $this->current;

Arguments:

File: /opt/wasabi/vendor/predis/predis/src/Connection/Replication/SentinelReplication.php (Line: 586)

578:   }

579:  }

580:

581:  /**

582:   * {@inheritdoc}

583:   */

584:  public function getConnectionByCommand(CommandInterface $command)

585:  {

586:   $connection = $this->getConnectionInternal($command);

587:

588:   if (!$connection->isConnected()) {

589:    // When we do not have any available slave in the pool we can expect

590:    // read-only operations to hit the master server.

591:    $expectedRole = $this->strategy->isReadOperation($command) && $this->slaves ? 'slave' : 'master';

592:    $this->assertConnectionRole($connection, $expectedRole);

Arguments:
object Predis\Command\Redis\GET(1) {
    private arguments => array(1) (
        0 => string(37) "SESS:ecdb1a922642243f72889b94b8c1b131"
    )
}

File: /opt/wasabi/vendor/predis/predis/src/Connection/Replication/SentinelReplication.php (Line: 718)

710:   * @return mixed

711:   */

712:  private function retryCommandOnFailure(CommandInterface $command, $method)

713:  {

714:   $retries = 0;

715:

716:   while ($retries <= $this->retryLimit) {

717:    try {

718:     $response = $this->getConnectionByCommand($command)->$method($command);

719:     break;

720:    } catch (CommunicationException $exception) {

721:     $this->wipeServerList();

722:     $exception->getConnection()->disconnect();

723:

724:     if ($retries === $this->retryLimit) {

Arguments:
Object Predis\Command\Redis\GET, already rendered

File: /opt/wasabi/vendor/predis/predis/src/Connection/Replication/SentinelReplication.php (Line: 758)

750:   return $this->retryCommandOnFailure($command, __FUNCTION__);

751:  }

752:

753:  /**

754:   * {@inheritdoc}

755:   */

756:  public function executeCommand(CommandInterface $command)

757:  {

758:   return $this->retryCommandOnFailure($command, __FUNCTION__);

759:  }

760:

761:  /**

762:   * Returns the underlying replication strategy.

763:   *

764:   * @return ReplicationStrategy

Arguments:
Object Predis\Command\Redis\GET, already rendered
string(14) "executeCommand"

File: /opt/wasabi/vendor/predis/predis/src/Client.php (Line: 381)

373:   throw new RuntimeException('Not allowed');

374:  }

375:

376:  /**

377:   * {@inheritdoc}

378:   */

379:  public function executeCommand(CommandInterface $command)

380:  {

381:   $response = $this->connection->executeCommand($command);

382:

383:   if ($response instanceof ResponseInterface) {

384:    if ($response instanceof ErrorResponseInterface) {

385:     $response = $this->onErrorResponse($command, $response);

386:    }

387:

Arguments:
Object Predis\Command\Redis\GET, already rendered

File: /opt/wasabi/vendor/predis/predis/src/Client.php (Line: 335)

327:   return $response;

328:  }

329:

330:  /**

331:   * {@inheritdoc}

332:   */

333:  public function __call($commandID, $arguments)

334:  {

335:   return $this->executeCommand(

336:    $this->createCommand($commandID, $arguments)

337:   );

338:  }

339:

340:  /**

341:   * {@inheritdoc}

Arguments:
Object Predis\Command\Redis\GET, already rendered

File: /opt/wasabi/src/Core/Storage/Adapter/RedisStorageAdapter.php (Line: 54)

46:   * @param string  $selector defines the key or the set of values

47:   * @param mixed|null $value possible values

48:   *

49:   * @return mixed

50:   */

51:  public function read($selector, $value = NULL)

52:  {

53:   $this->getConnection();

54:   return unserialize((string)$this->connection->get($selector));

55:  }

56:

57:  /**

58:   * update data

59:   *

60:   * @param string  $selector defines the key or the set of values

Arguments:
string(3) "get"
array(1) (
    0 => string(37) "SESS:ecdb1a922642243f72889b94b8c1b131"
)

File: /opt/wasabi/src/Core/System/SessionHandler.php (Line: 84)

76:

77:  /**

78:   * @param string $id session id

79:   *

80:   * @return false|string

81:   */

82:  public function read(string $id): false|string

83:  {

84:   if ($data = $this->adapter->read(self::PREFIX . $id))

85:   {

86:    return $data;

87:   }

88:   return '';

89:  }

90:

Arguments:
string(37) "SESS:ecdb1a922642243f72889b94b8c1b131"

Unable to determine the detailed information about a exception trace part.

File: /opt/wasabi/src/Core/System/Session.php (Line: 70)

62:

63:   if ($name === NULL)

64:   {

65:    $name = $this->defaultName;

66:   }

67:

68:   $this->isStarted = TRUE;

69:   session_name($name);

70:   session_start();

71:  }

72:

73:  /**

74:   * getId

75:   *

76:   * @return false|string

Arguments:

File: /opt/wasabi/src/WebFrontend/Functionality/UserSettings/UserNotice.php (Line: 36)

28:   * UserNotice constructor.

29:   *

30:   * @param Session $session Session

31:   */

32:  public function __construct(Session $session)

33:  {

34:   if (!$session->isStarted())

35:   {

36:    $session->start();

37:   }

38:   $this->session = $session;

39:  }

40:

41:  /**

42:   * Add a Message to be Displayed.

Arguments:

File: /opt/wasabi/src/Core/Factory/DIC.php (Line: 161)

153:

154:   // Create parameter generating function in order to cache reflection on the parameters. This way $reflect->getParameters() only ever gets called once

155:   $params = $constructor ? $this->getParams($constructor, $rule) : NULL;

156:   // Get a closure based on the type of object being created: Shared, normal or constructorless

157:   if ($params)

158:   {

159:    $closure = function (array $args, array $share) use ($class, $params) {

160:     // This class has depenencies, call the $params closure to generate them based on $args and $share

161:     return new $class->name(...$params($args, $share));

162:    };

163:   }

164:   else

165:   {

166:    $closure = function () use ($class) { // No constructor arguments, just instantiate the class

167:     return new $class->name;

Arguments:
object WASABI\Core\System\Session(3) {
    protected isStarted => bool TRUE
    protected defaultName => string(13) "rsWebFrontend"
    protected objects => array(0) 
}

File: /opt/wasabi/src/Core/Factory/DIC.php (Line: 106)

98:    throw new FactoryException('Class does not exist for creation: ' . $className);

99:   }

100:   // Create a closure for creating the object if there isn't one already

101:   if (empty($this->cache[$className]))

102:   {

103:    $this->cache[$className] = $this->getClosure($className, $this->getRule(strtolower($className)));

104:   }

105:   // Call the cached closure which will return a fully constructed object of type $name

106:   $object = $this->cache[$className]($args, $share);

107:   return $this->injectAdditional($object);

108:  }

109:

110:  /**

111:   * Returns the rule that will be applied to the class $name when calling create()

112:   *

Arguments:
array(0) 
array(0) 

File: /opt/wasabi/src/Core/Factory/DIC.php (Line: 324)

316:      try

317:      {

318:       if ($sub)

319:       {

320:        $parameters[] = $this->expand($rule['substitutions'][$class], $share, TRUE);

321:       }

322:       else

323:       {

324:        $parameters[] = !$param->allowsNull() ? $this->getInstanceFor($class, [], $share) : NULL;

325:       }

326:      }

327:      catch (InvalidArgumentException)

328:      {

329:      }

330:     }

Arguments:
string(56) "WASABI\WebFrontend\Functionality\UserSettings\UserNotice"
array(0) 
array(0) 

File: /opt/wasabi/src/Core/Factory/DIC.php (Line: 161)

153:

154:   // Create parameter generating function in order to cache reflection on the parameters. This way $reflect->getParameters() only ever gets called once

155:   $params = $constructor ? $this->getParams($constructor, $rule) : NULL;

156:   // Get a closure based on the type of object being created: Shared, normal or constructorless

157:   if ($params)

158:   {

159:    $closure = function (array $args, array $share) use ($class, $params) {

160:     // This class has depenencies, call the $params closure to generate them based on $args and $share

161:     return new $class->name(...$params($args, $share));

162:    };

163:   }

164:   else

165:   {

166:    $closure = function () use ($class) { // No constructor arguments, just instantiate the class

167:     return new $class->name;

Arguments:
array(0) 
array(0) 

File: /opt/wasabi/src/Core/Factory/DIC.php (Line: 106)

98:    throw new FactoryException('Class does not exist for creation: ' . $className);

99:   }

100:   // Create a closure for creating the object if there isn't one already

101:   if (empty($this->cache[$className]))

102:   {

103:    $this->cache[$className] = $this->getClosure($className, $this->getRule(strtolower($className)));

104:   }

105:   // Call the cached closure which will return a fully constructed object of type $name

106:   $object = $this->cache[$className]($args, $share);

107:   return $this->injectAdditional($object);

108:  }

109:

110:  /**

111:   * Returns the rule that will be applied to the class $name when calling create()

112:   *

Arguments:
array(0) 
array(0) 

File: /opt/wasabi/src/WebFrontend/Bootstrap/DomainBootstrap.php (Line: 62)

54:   $siteInitController = $this->factory->getInstanceFor(SiteInitController::class);

55:   $siteInitController->initSite($this->environment, $this->request);

56:   $siteMetaInformation = $siteInitController->getSiteMetaInformation();

57:   /** @var GeoLocationCookieController $cookieController */

58:   $cookieController = $this->factory->getInstanceFor(GeoLocationCookieController::class);

59:   $cookieController->handleGeoLocationCookie($this->request, $siteMetaInformation);

60:

61:   /** @var GeoLocationMessageController $messageController */

62:   $messageController = $this->factory->getInstanceFor(GeoLocationMessageController::class);

63:   $messageController->createUserNotes($siteMetaInformation);

64:

65:   /** @var FolderVersion $folderVersion */

66:   $folderVersion = $this->factory->getInstanceFor(FolderVersion::class);

67:   $this->environment->setGlobalVersion($folderVersion->getGlobalLanguageVersion());

68:

Arguments:
string(73) "WASABI\WebFrontend\Functionality\GeoLocation\GeoLocationMessageController"

File: /opt/wasabi/src/Core/Bootstrap/AbstractBootstrap.php (Line: 114)

106:  {

107:   $this->uri  = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);

108:   $this->factory = $this->initializeFactory();

109:   $this->config = $this->setupConfiguration();

110:   $this->setRequest();

111:   $this->logger = $this->factory->getInstanceFor(Logger::class, [$this->site, $this->request]);

112:   $this->factory->setLogger($this->logger);

113:   $this->setupErrorManager();

114:   $this->buildEnvironment();

115:   if ($this->config->getConfigValueWithDefaultValue('global', 'pageType', 'site') != 'site')

116:   {

117:    $this->config->addConfig(WASABI_BASEPATH . '/config/' . $this->environment->getSite() . '/' . $this->environment->getSubSite() . '/config.xml');

118:   }

119:   $this->localization();

120:   $this->executeInitManager();

Arguments:

File: /opt/wasabi/src/WebFrontend/Bootstrap/ProductionWebBootstrap.php (Line: 37)

29:   * prepare webFrontend execution and run request

30:   *

31:   * @param Request|null $request object

32:   *

33:   * @return void

34:   */

35:  public function run(?Request $request = NULL): void

36:  {

37:   $this->init();

38:   /** @var WebFrontDispatcher $frontDispatcher */

39:   $frontDispatcher = $this->factory->getInstanceFor(WebFrontDispatcher::class);

40:   $frontDispatcher->setLogger($this->logger);

41:   $frontDispatcher->init();

42:   /** @var WebFrontend $frontend */

43:   $frontend = $this->factory->getInstanceFor(WebFrontend::class);

Arguments:

File: /srv/www/com/index.php (Line: 22)

14: $localConfig = getenv('RS_CONFIG');

15: $debug  = getenv('RS_DEBUG_MODE');

16:

17: const WASABI_BASEPATH = '/opt/wasabi';

18:

19: require WASABI_BASEPATH . '/vendor/autoload.php';

20:

21: $bootstrap = new DomainBootstrap($site, $localConfig, $debug);

22: $bootstrap->run();

23:

Arguments: