diff --git a/packages/leann-backend-diskann/leann_backend_diskann/diskann_embedding_server.py b/packages/leann-backend-diskann/leann_backend_diskann/diskann_embedding_server.py index 1d5896b..2b1e326 100644 --- a/packages/leann-backend-diskann/leann_backend_diskann/diskann_embedding_server.py +++ b/packages/leann-backend-diskann/leann_backend_diskann/diskann_embedding_server.py @@ -103,8 +103,9 @@ def create_diskann_embedding_server( socket.bind(f"tcp://*:{zmq_port}") logger.info(f"DiskANN ZMQ REP server listening on port {zmq_port}") - socket.setsockopt(zmq.RCVTIMEO, 300000) - socket.setsockopt(zmq.SNDTIMEO, 300000) + socket.setsockopt(zmq.RCVTIMEO, 1000) + socket.setsockopt(zmq.SNDTIMEO, 1000) + socket.setsockopt(zmq.LINGER, 0) while True: try: @@ -236,7 +237,8 @@ def create_diskann_embedding_server( # Set receive timeout so we can check shutdown_event periodically rep_socket.setsockopt(zmq.RCVTIMEO, 1000) # 1 second timeout - rep_socket.setsockopt(zmq.SNDTIMEO, 300000) + rep_socket.setsockopt(zmq.SNDTIMEO, 1000) + rep_socket.setsockopt(zmq.LINGER, 0) try: while not shutdown_event.is_set(): diff --git a/packages/leann-backend-hnsw/leann_backend_hnsw/hnsw_embedding_server.py b/packages/leann-backend-hnsw/leann_backend_hnsw/hnsw_embedding_server.py index 6690c51..85c279a 100644 --- a/packages/leann-backend-hnsw/leann_backend_hnsw/hnsw_embedding_server.py +++ b/packages/leann-backend-hnsw/leann_backend_hnsw/hnsw_embedding_server.py @@ -108,7 +108,9 @@ def create_hnsw_embedding_server( rep_socket.bind(f"tcp://*:{zmq_port}") logger.info(f"HNSW ZMQ REP server listening on port {zmq_port}") rep_socket.setsockopt(zmq.RCVTIMEO, 1000) - rep_socket.setsockopt(zmq.SNDTIMEO, 300000) + # Keep sends from blocking during shutdown; fail fast and drop on close + rep_socket.setsockopt(zmq.SNDTIMEO, 1000) + rep_socket.setsockopt(zmq.LINGER, 0) # Track last request type/length for shape-correct fallbacks last_request_type = "unknown" # 'text' | 'distance' | 'embedding' | 'unknown'