Skip to content

Commit e1cbc39

Browse files
committed
fix: Resolve signal blocking issue
1 parent 6cdf9d2 commit e1cbc39

File tree

2 files changed

+42
-1
lines changed

2 files changed

+42
-1
lines changed

programs/local/LocalServer.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -481,7 +481,7 @@ try
481481

482482
StackTrace::setShowAddresses(server_settings.show_addresses_in_stack_traces);
483483

484-
setupSignalHandler();
484+
// setupSignalHandler();
485485

486486
std::cout << std::fixed << std::setprecision(3);
487487
std::cerr << std::fixed << std::setprecision(3);

tests/test_signal_handler.py

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
#!python3
2+
3+
import unittest
4+
import os
5+
import signal
6+
import threading
7+
import time
8+
from chdb import session
9+
10+
class TestSignalHandler(unittest.TestCase):
11+
def setUp(self) -> None:
12+
self.sess = session.Session()
13+
self.signal_received = False
14+
return super().setUp()
15+
16+
def tearDown(self) -> None:
17+
self.sess.close()
18+
return super().tearDown()
19+
20+
def background_sender(self):
21+
time.sleep(5)
22+
print("send signal")
23+
os.kill(os.getpid(), signal.SIGINT)
24+
25+
def test_signal_response(self):
26+
sender_thread = threading.Thread(target=self.background_sender, daemon=True)
27+
sender_thread.start()
28+
29+
start_time = time.time()
30+
try:
31+
while time.time() - start_time < 10:
32+
time.sleep(0.1)
33+
self.sess.query("SELECT 1")
34+
except KeyboardInterrupt:
35+
print("receive signal")
36+
self.signal_received = True
37+
38+
self.assertTrue(self.signal_received)
39+
40+
if __name__ == "__main__":
41+
unittest.main()

0 commit comments

Comments
 (0)