Packages
snakepit
0.3.1
0.13.0
0.12.0
0.11.1
0.11.0
0.10.1
0.10.0
0.9.1
0.9.0
0.8.9
0.8.8
0.8.7
0.8.6
0.8.5
0.8.4
0.8.3
0.8.2
0.8.1
0.8.0
0.7.7
0.7.6
0.7.5
0.7.4
0.7.3
0.7.2
0.7.1
0.7.0
0.6.11
0.6.10
0.6.9
0.6.8
0.6.7
0.6.6
0.6.5
0.6.4
0.6.3
0.6.2
0.6.1
0.6.0
0.5.1
0.5.0
0.4.3
0.4.2
0.4.1
0.4.0
0.3.3
0.3.2
0.3.1
0.3.0
0.2.1
0.2.0
0.1.2
0.1.1
0.1.0
High-performance pooler and session manager for external language integrations. Supports Python, Node.js, Ruby, and more with gRPC streaming, session management, and production-ready process cleanup.
Current section
Files
Jump to
Current section
Files
docs/protocol_negotiation_fix.md
# Protocol Negotiation Fix
## Issue
When running tests, the Python bridge was printing "Protocol negotiation failed, defaulting to JSON" warnings even though the test configuration explicitly set `wire_protocol: :json`.
## Root Cause
1. The Elixir worker correctly skipped protocol negotiation when `wire_protocol` was not `:auto`
2. However, the Python bridge was always initialized with `protocol="auto"` (the default)
3. The Python bridge expected a negotiation message that never came, causing it to print the warning and default to JSON
## Solution
Modified the adapter to pass the wire protocol configuration to the Python bridge via command line arguments:
1. **Updated `generic_bridge_v2.py`** to accept a `--protocol` argument
2. **Updated `Snakepit.Adapters.GenericPythonV2.script_args/0`** to include the protocol configuration based on the `wire_protocol` setting
Now when `wire_protocol` is set to `:json` or `:msgpack`, the Python bridge starts with the correct protocol without attempting negotiation.
## Benefits
- Eliminates unnecessary warning messages in test output
- Slightly faster startup (no negotiation timeout)
- More explicit configuration flow
- Better alignment between Elixir and Python sides
## Testing
All tests pass with the fix applied. The Python bridge correctly uses the configured protocol without negotiation warnings.