ClickHouse / ClickHouse/clickhouse-java
`socket_keepalive` doesn't work with shaded clickhouse-jdbc
- Dominant language
- Java
- Stars
- 1.6k
- Forks
- 636
- Avg merge
- 2d 16h
- Merged PRs (30d)
- 28
Description
## `socket_keepalive` doesnt' applied
### Steps to reproduce
Note: I would expect that instruction from official site[1] should end up with the same result.
1. Specify following option for apache/cloudberry-pxf:
```
jdbc.connection.property.socket_keepalive
true
```
or in JDBC URL `&socket_keepalive=true`
2. expect that `SO_KEEPALIVE=true`. However it is not.
Actual:
```
# ss -Otnpio state established | grep -F '8123'
0 0 [::ffff:10.1.0.9]:44198 [::ffff:10.1.0.20]:8123 users:(("java",pid=2731285,fd=34)) ts sack illinois wscale:10,4 rto:201 rtt:0.343/0.188
```
Expected (spot the `timer` section!):
```
0 0 [::ffff:10.1.0.29]:15938 [::ffff:10.1.0.20]:8123 users:(("java",pid=514753,fd=36)) timer:(keepalive,10sec,0) ts sack illinois wscale:10,4 rto:201 rtt:0.249/0.123
```
#### Environment
* Cloud
* Client version: 0.9.8 and 0.10.0
* OS: Ubuntu 22.04
#### ClickHouse Server
* ClickHouse Server version: 26.7.5.10
* `CREATE TABLE` statements for tables involved:
```
SELECT toInt32(sleep(600)) AS slept
SETTINGS
function_sleep_max_microseconds_per_block = 600000000,
max_execution_time = 0
```
[1] https://clickhouse.com/docs/integrations/language-clients/java/jdbc#linux
Contributor guide
Research direction
Start by reproducing the JDBC property and URL forms on Ubuntu 22.04 with ClickHouse Server 26.7.5.10, then compare socket behavior for the shaded clickhouse-jdbc client. Done means enabling socket_keepalive produces the expected keepalive timer in ss output for the affected client versions.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- java, linux
- Domain
- databases
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 52/100