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

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions