### Description
I´m using kamailio´s sqlops-module on a postgresql database.

If the database server gets unreachable during operation, sqlops detects this 
and tries to reconnect:
```
14:40:48.784 WARNING: db_postgres [km_dbase.c:259]: db_postgres_submit_query(): 
postgres query command failed, connection status 1, error [no connection to the 
server]
14:40:48.784 DEBUG: db_postgres [km_dbase.c:262]: db_postgres_submit_query(): 
resetting the connection to postgress server
14:40:48.784 ERROR: db_postgres [km_dbase.c:267]: db_postgres_submit_query(): 
0x7f80a8093680 PQsendQuery Error: could not connect to server: Connection 
refused
```

and finally, when the DB comes up again, succeeds in executing queries:
```
14:41:39.738 WARNING: db_postgres [km_dbase.c:259]: db_postgres_submit_query(): 
postgres query command failed, connection status 1, error [SSL connection has 
been closed unexpectedly]
14:41:39.739 DEBUG: db_postgres [km_dbase.c:262]: db_postgres_submit_query(): 
resetting the connection to postgress server
14:41:39.810 DEBUG: db_postgres [km_dbase.c:249]: db_postgres_submit_query(): 
sending query ok: 0x7f80a8093680 (1) 
```
So, obviously the module can handle database outages well.

But if the DB is already down when kamailio is started, the cyclic reconnect 
does not work. Instead, kamailio fails to start immediately:

```
14:57:54.187 CRITICAL: <core> [main.c:1614]: main_loop(): Cannot fork
14:57:54.188 DEBUG: db_postgres [km_pg_con.c:112]: 
db_postgres_new_connection(): PQconnectdbParams(0x136bfb0)
14:57:54.188 DEBUG: <core> [core/sr_module.c:938]: init_mod_child(): idx 12 
rank -1: rtimer [timer]
14:57:54.188 DEBUG: <core> [core/sr_module.c:938]: init_mod_child(): idx 12 
rank -1: sqlops [timer]
14:57:54.188 DEBUG: <core> [core/sr_module.c:708]: find_mod_export_record(): 
found export of <db_bind_api> in module db_postgres 
[/usr/lib64/kamailio/modules/db_postgres.so]
14:57:54.188 DEBUG: <core> [db.c:209]: db_bind_mod(): using db bind api for 
db_postgres
14:57:54.188 DEBUG: <core> [db.c:314]: db_do_init2(): connection 0x7f23c0154120 
not found in pool
14:57:54.188 DEBUG: db_postgres [km_pg_con.c:56]: db_postgres_new_connection(): 
db_id = 0x7f23c0154120
14:57:54.188 DEBUG: db_postgres [km_pg_con.c:70]: db_postgres_new_connection(): 
0x7f23c0154380=pkg_malloc(80)
14:57:54.188 DEBUG: db_postgres [km_pg_con.c:84]: db_postgres_new_connection(): 
opening connection: postgres://xxxx:xxxx@xxxxxxxxxxxxxxxxxx
14:57:54.188 DEBUG: db_postgres [km_pg_con.c:112]: 
db_postgres_new_connection(): PQconnectdbParams(0x13a41e0)
14:57:54.188 ERROR: db_postgres [km_pg_con.c:115]: 
db_postgres_new_connection(): could not connect to server: Connection refused 
Is the server running on host "xxxxxxxxxxxx" () and accepting TCP/IP 
connections on port 5432?
14:57:54.188 ERROR: db_postgres [km_pg_con.c:148]: 
db_postgres_new_connection(): cleaning up 0x7f23c0154380=pkg_free()
14:57:54.188 ERROR: <core> [db.c:318]: db_do_init2(): could not add connection 
to the pool
14:57:54.188 ERROR: sqlops [sql_api.c:164]: sql_connect(): failed to connect to 
the database [cb]
14:57:54.188 ERROR: <core> [core/sr_module.c:942]: init_mod_child(): error 
while initializing module sqlops (/usr/lib64/kamailio/modules/sqlops.so) (idx: 
12 rank: -1 desc: [timer])
14:57:54.189 ERROR: <core> [core/pt.c:340]: fork_process(): init_child failed 
for process 12, pid 24036, "timer"
14:57:54.189 CRITICAL: <core> [main.c:1691]: main_loop(): cannot fork timer 
process
14:57:54.189 ALERT: <core> [main.c:743]: handle_sigs(): child process 24009 
exited normally, status=255
14:57:54.190 ALERT: <core> [main.c:743]: handle_sigs(): child process 24010 
exited normally, status=255
14:57:54.190 ALERT: <core> [main.c:743]: handle_sigs(): child process 24011 
exited normally, status=255
14:57:54.191 ALERT: <core> [main.c:743]: handle_sigs(): child process 24013 
exited normally, status=255
14:57:54.191 ALERT: <core> [main.c:743]: handle_sigs(): child process 24015 
exited normally, status=255
14:57:54.191 ALERT: <core> [main.c:743]: handle_sigs(): child process 24019 
exited normally, status=255
14:57:54.191 ALERT: <core> [main.c:743]: handle_sigs(): child process 24030 
exited normally, status=255
14:57:54.192 INFO: <core> [main.c:771]: handle_sigs(): terminating due to 
SIGCHLD
14:57:54.192 INFO: <core> [main.c:826]: sig_usr(): signal 15 received
14:57:54.192 INFO: <core> [main.c:826]: sig_usr(): signal 15 received
```

#### Reproduction

- use kamailio-script with sqlops
- stop kamailio
- stop database
- try to start kamailio

#### Log Messages
see above

### Additional Information

  * **Kamailio Version** - output of `kamailio -v`
kamailio 5.1.2 (x86_64/linux)

* **Operating System**:
RHEL 7.4 on x86_64


-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/kamailio/kamailio/issues/1681
_______________________________________________
Kamailio (SER) - Development Mailing List
sr-dev@lists.kamailio.org
https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-dev

Reply via email to