Skip to content

ServerSelectionTimeoutError when services connect to mongo. #240

@brianwilliams-123

Description

@brianwilliams-123

Problem

I tried to install StackStorm on Docker using this repository's guide without any changes done to the files.

After executing docker-compose, every service that depends on the mongo service, and tries to connect to its database throws the exception ServerSelectionTimeoutError:

st2timersengine_1      | 2022-03-22 18:19:08,934 ERROR [-] Failed to connect to database "st2" @ "mongo:27017" as user "None": No servers found yet, Timeout: 3.0s, Topology Description: <TopologyDescrip
tion id: 623a13191966d2953888ab75, topology_type: Single, servers: [<ServerDescription ('mongo', 27017) server_type: Unknown, rtt: None>]>                                                                
st2timersengine_1      | 2022-03-22 18:19:08,934 ERROR [-] (PID=1) TimerEngine quit due to exception.                                                                                                     
st2timersengine_1      | Traceback (most recent call last):                                                                                                                                               
st2timersengine_1      |   File "/opt/stackstorm/st2/lib/python3.6/site-packages/st2reactor/cmd/timersengine.py", line 93, in main                                                                        
st2timersengine_1      |     _setup()                                                                                                                                                                     
st2timersengine_1      |   File "/opt/stackstorm/st2/lib/python3.6/site-packages/st2reactor/cmd/timersengine.py", line 50, in _setup                                                                      
st2timersengine_1      |     capabilities=capabilities,                                                                                                                                                   
st2timersengine_1      |   File "/opt/stackstorm/st2/lib/python3.6/site-packages/st2common/service_setup.py", line 249, in setup                                                                          
st2timersengine_1      |     db_setup()                                                                                                                                                                   
st2timersengine_1      |   File "/opt/stackstorm/st2/lib/python3.6/site-packages/st2common/database_setup.py", line 55, in db_setup                                                                       
st2timersengine_1      |     connection = db_init.db_setup_with_retry(**db_cfg)                                                                                                                           
st2timersengine_1      |   File "/opt/stackstorm/st2/lib/python3.6/site-packages/st2common/persistence/db_init.py", line 93, in db_setup_with_retry                                                       
st2timersengine_1      |     ssl_match_hostname=ssl_match_hostname,                                                                                                                                       
st2timersengine_1      |   File "/opt/stackstorm/st2/lib/python3.6/site-packages/st2common/persistence/db_init.py", line 58, in db_func_with_retry                                                        
st2timersengine_1      |     return retrying_obj.call(db_func, *args, **kwargs)                                                                                                                           
st2timersengine_1      |   File "/opt/stackstorm/st2/lib/python3.6/site-packages/retrying.py", line 206, in call                                                                                          
st2timersengine_1      |     return attempt.get(self._wrap_exception)                                                                                                                                     
st2timersengine_1      |   File "/opt/stackstorm/st2/lib/python3.6/site-packages/retrying.py", line 247, in get                                                                                           
st2timersengine_1      |     six.reraise(self.value[0], self.value[1], self.value[2])                                                                                                                     
st2timersengine_1      |   File "/opt/stackstorm/st2/lib/python3.6/site-packages/six.py", line 696, in reraise                                                                                            
st2timersengine_1      |     raise value                                                                                                                                                                  
st2timersengine_1      |   File "/opt/stackstorm/st2/lib/python3.6/site-packages/retrying.py", line 200, in call                                                                                          
st2timersengine_1      |     attempt = Attempt(fn(*args, **kwargs), attempt_number, False)                                                                                                                
st2timersengine_1      |   File "/opt/stackstorm/st2/lib/python3.6/site-packages/st2common/models/db/__init__.py", line 251, in db_setup                                                                  
st2timersengine_1      |     ssl_match_hostname=ssl_match_hostname,                                                                                                                                       
st2timersengine_1      |   File "/opt/stackstorm/st2/lib/python3.6/site-packages/st2common/models/db/__init__.py", line 213, in _db_connect                                                               
st2timersengine_1      |     raise e                                                                                                                                                                      
st2timersengine_1      |   File "/opt/stackstorm/st2/lib/python3.6/site-packages/st2common/models/db/__init__.py", line 204, in _db_connect                                                               
st2timersengine_1      |     connection.admin.command("ping")                                                                                                                                             
st2timersengine_1      |   File "/opt/stackstorm/st2/lib/python3.6/site-packages/pymongo/database.py", line 737, in command                                                                               
st2timersengine_1      |     read_preference, session) as (sock_info, slave_ok):                                                                                                                          
st2timersengine_1      |   File "/usr/lib/python3.6/contextlib.py", line 81, in __enter__                                                                                                                 
st2timersengine_1      |     return next(self.gen)                                                                                                                                                        
st2timersengine_1      |   File "/opt/stackstorm/st2/lib/python3.6/site-packages/pymongo/mongo_client.py", line 1325, in _socket_for_reads                                                                
st2timersengine_1      |     server = self._select_server(read_preference, session)                                                                                                                       
st2timersengine_1      |   File "/opt/stackstorm/st2/lib/python3.6/site-packages/pymongo/mongo_client.py", line 1278, in _select_server                                                                   
st2timersengine_1      |     server = topology.select_server(server_selector)                                                                                                                             
st2timersengine_1      |   File "/opt/stackstorm/st2/lib/python3.6/site-packages/pymongo/topology.py", line 243, in select_server                                                                         
st2timersengine_1      |     address))                                                                                                                                                                    
st2timersengine_1      |   File "/opt/stackstorm/st2/lib/python3.6/site-packages/pymongo/topology.py", line 200, in select_servers                                                                        
st2timersengine_1      |     selector, server_timeout, address)                                                                                                                                           st2timersengine_1      |   File "/opt/stackstorm/st2/lib/python3.6/site-packages/pymongo/topology.py", line 217, in _select_servers_loop                                                                  
st2timersengine_1      |     (self._error_message(selector), timeout, self.description))                                                                                                                  
st2timersengine_1      | pymongo.errors.ServerSelectionTimeoutError: No servers found yet, Timeout: 3.0s, Topology Description: <TopologyDescription id: 623a13191966d2953888ab75, topology_type: Single, 
servers: [<ServerDescription ('mongo', 27017) server_type: Unknown, rtt: None>]>

After doing some digging, the source of this issue the exception ServerSelectionTimeoutError is caught in line 205 of this file https://github.com/StackStorm/st2/blob/master/st2common/st2common/models/db/init.py.

Some services keep restarting indefinitely due to the restart: on-failure option and only st2-docker_st2web_1 and st2-docker_st2client_1 stay up, but they are unusable.

CONTAINER ID   IMAGE                                   COMMAND                  CREATED          STATUS                         PORTS                                                 NAMES
5cab2898f2c9   stackstorm/st2actionrunner:latest       "/st2client-startup.…"   15 minutes ago   Up 2 minutes                                                                         st2-docker_st2client_1
a265df0d2466   stackstorm/st2chatops:latest            "/st2chatops-startup…"   15 minutes ago   Exited (0) 2 minutes ago                                                             st2-docker_st2chatops_1
299d5ab21193   stackstorm/st2web:latest                "/bin/bash -c 'if [ …"   15 minutes ago   Up 2 minutes (unhealthy)       127.0.0.1:80->80/tcp, 443/tcp                         st2-docker_st2web_1
b47e4c381ba9   stackstorm/st2timersengine:latest       "/opt/stackstorm/st2…"   15 minutes ago   Up 5 seconds                                                                         st2-docker_st2timersengine_1
f424783795a7   stackstorm/st2actionrunner:latest       "/opt/stackstorm/st2…"   15 minutes ago   Restarting (1) 5 seconds ago                                                         st2-docker_st2actionrunner_1
e584a6a1dee6   stackstorm/st2stream:latest             "/opt/stackstorm/st2…"   15 minutes ago   Up 1 second                    9102/tcp                                              st2-docker_st2stream_1
75ae17a1eabf   stackstorm/st2auth:latest               "/opt/stackstorm/st2…"   15 minutes ago   Up 9 seconds                   9100/tcp                                              st2-docker_st2auth_1
fe556f0a4bd6   stackstorm/st2workflowengine:latest     "/opt/stackstorm/st2…"   15 minutes ago   Restarting (1) 4 seconds ago                                                         st2-docker_st2workflowengine_1
e0e6f4ad0aa9   stackstorm/st2sensorcontainer:latest    "/opt/stackstorm/st2…"   15 minutes ago   Up 7 seconds                                                                         st2-docker_st2sensorcontainer_1
0676f3a3b7c1   stackstorm/st2garbagecollector:latest   "/opt/stackstorm/st2…"   15 minutes ago   Restarting (1) 4 seconds ago                                                         st2-docker_st2garbagecollector_1
fec487dd323b   stackstorm/st2scheduler:latest          "/opt/stackstorm/st2…"   15 minutes ago   Up 12 seconds                                                                        st2-docker_st2scheduler_1
ece3af683ef5   stackstorm/st2notifier:latest           "/opt/stackstorm/st2…"   15 minutes ago   Up 20 seconds                                                                        st2-docker_st2notifier_1
2e523c091513   stackstorm/st2rulesengine:latest        "/opt/stackstorm/st2…"   15 minutes ago   Up 22 seconds                                                                        st2-docker_st2rulesengine_1
ad9b149797e6   stackstorm/st2api:latest                "/opt/stackstorm/st2…"   15 minutes ago   Up 5 seconds                   9101/tcp                                              st2-docker_st2api_1
97329d112d76   stackstorm/st2actionrunner:latest       "/makesecrets.sh"        15 minutes ago   Exited (0) 2 minutes ago                                                             st2-docker_st2makesecrets_1
01453a00d51b   mongo:4.0                               "docker-entrypoint.s…"   15 minutes ago   Up 2 minutes                   27017/tcp                                             st2-docker_mongo_1
a971e05ba16d   rabbitmq:3.8                            "docker-entrypoint.s…"   15 minutes ago   Up 2 minutes                   4369/tcp, 5671-5672/tcp, 15691-15692/tcp, 25672/tcp   st2-docker_rabbitmq_1
a8a72c873785   redis:6.2                               "docker-entrypoint.s…"   15 minutes ago   Up 2 minutes                   6379/tcp                                              st2-docker_redis_1

Anyone else encountered this error?

Versions

  • Host OS: Debian GNU/Linux 11 (bullseye)
  • docker: 20.10.5+dfsg1
  • docker-compose: 1.25.0
  • stackstorm version: v3.6.0

How to reproduce

Follow the README of this repository.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions