Fix: Add Neo4j connection pool configuration parameters
Added configurable connection pool parameters to Neo4jDriver to fix "network abort" and "Response write failure" errors caused by stale connections. Changes: - Added max_connection_pool_size parameter (default: 200) - Added connection_timeout parameter (default: 60s) - Added max_connection_lifetime parameter (default: 7200s = 2hr) - Added liveness_check_timeout parameter (default: 60s) - CRITICAL FIX - Added connection_acquisition_timeout parameter (default: 120s) The liveness_check_timeout=60s enables connection validation after 60s of idle time, preventing reuse of stale connections that were closed by the Neo4j server. Version: graphiti-core-varming 0.23.2 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
parent
7a22236164
commit
a74bdf8321
2 changed files with 24 additions and 1 deletions
|
|
@ -38,11 +38,34 @@ class Neo4jDriver(GraphDriver):
|
||||||
user: str | None,
|
user: str | None,
|
||||||
password: str | None,
|
password: str | None,
|
||||||
database: str = 'neo4j',
|
database: str = 'neo4j',
|
||||||
|
max_connection_pool_size: int = 200,
|
||||||
|
connection_timeout: float = 60.0,
|
||||||
|
max_connection_lifetime: float = 7200.0,
|
||||||
|
liveness_check_timeout: float = 60.0,
|
||||||
|
connection_acquisition_timeout: float = 120.0,
|
||||||
):
|
):
|
||||||
|
"""Initialize Neo4j driver with connection pool configuration.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
uri: Neo4j connection URI (bolt://, neo4j://, etc.)
|
||||||
|
user: Username for authentication
|
||||||
|
password: Password for authentication
|
||||||
|
database: Database name (default: 'neo4j')
|
||||||
|
max_connection_pool_size: Max connections per host (default: 200)
|
||||||
|
connection_timeout: Timeout for TCP connection (default: 60s)
|
||||||
|
max_connection_lifetime: Max time connection is kept (default: 7200s = 2hr)
|
||||||
|
liveness_check_timeout: Idle time before connection check (default: 60s)
|
||||||
|
connection_acquisition_timeout: Timeout to acquire connection (default: 120s)
|
||||||
|
"""
|
||||||
super().__init__()
|
super().__init__()
|
||||||
self.client = AsyncGraphDatabase.driver(
|
self.client = AsyncGraphDatabase.driver(
|
||||||
uri=uri,
|
uri=uri,
|
||||||
auth=(user or '', password or ''),
|
auth=(user or '', password or ''),
|
||||||
|
max_connection_pool_size=max_connection_pool_size,
|
||||||
|
connection_timeout=connection_timeout,
|
||||||
|
max_connection_lifetime=max_connection_lifetime,
|
||||||
|
liveness_check_timeout=liveness_check_timeout,
|
||||||
|
connection_acquisition_timeout=connection_acquisition_timeout,
|
||||||
)
|
)
|
||||||
self._database = database
|
self._database = database
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
[project]
|
[project]
|
||||||
name = "graphiti-core-varming"
|
name = "graphiti-core-varming"
|
||||||
description = "A temporal graph building library (Varming fork with database parameter fix)"
|
description = "A temporal graph building library (Varming fork with database parameter fix)"
|
||||||
version = "0.23.1"
|
version = "0.23.2"
|
||||||
authors = [
|
authors = [
|
||||||
{ name = "Paul Paliychuk", email = "paul@getzep.com" },
|
{ name = "Paul Paliychuk", email = "paul@getzep.com" },
|
||||||
{ name = "Preston Rasmussen", email = "preston@getzep.com" },
|
{ name = "Preston Rasmussen", email = "preston@getzep.com" },
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue