This is an automated email from the ASF dual-hosted git repository.
albumenj pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/dubbo-python.git
The following commit(s) were added to refs/heads/main by this push:
new 462a3f7 bugfix: fix transport exception when multi client connect to
same ser… (#47)
462a3f7 is described below
commit 462a3f779275850d90fd6eab638ac5ebc931281b
Author: kifile <[email protected]>
AuthorDate: Mon Mar 24 09:39:12 2025 +0800
bugfix: fix transport exception when multi client connect to same ser… (#47)
* bugfix: fix transport exception when multi client connect to same server.
* Remove unused import.
* Remove unused properties.
---
src/dubbo/protocol/triple/protocol.py | 7 ++-----
src/dubbo/remoting/aio/constants.py | 2 ++
src/dubbo/remoting/aio/http2/protocol.py | 8 +++++++-
3 files changed, 11 insertions(+), 6 deletions(-)
diff --git a/src/dubbo/protocol/triple/protocol.py
b/src/dubbo/protocol/triple/protocol.py
index 1326507..f4aa4d3 100644
--- a/src/dubbo/protocol/triple/protocol.py
+++ b/src/dubbo/protocol/triple/protocol.py
@@ -31,8 +31,7 @@ from dubbo.remoting import Server, Transporter
from dubbo.remoting.aio import constants as aio_constants
from dubbo.remoting.aio.http2.protocol import Http2ClientProtocol,
Http2ServerProtocol
from dubbo.remoting.aio.http2.stream_handler import (
- StreamClientMultiplexHandler,
- StreamServerMultiplexHandler,
+ StreamClientMultiplexHandler
)
from dubbo.url import URL
@@ -74,10 +73,8 @@ class TripleProtocol(Protocol):
listener_factory = functools.partial(ServerTransportListener,
self._path_resolver, method_executor)
- # Create a stream handler
- stream_multiplexer = StreamServerMultiplexHandler(listener_factory)
# set stream handler and protocol
- url.attributes[aio_constants.STREAM_HANDLER_KEY] = stream_multiplexer
+ url.attributes[aio_constants.LISTENER_FACTORY_KEY] = listener_factory
url.attributes[common_constants.PROTOCOL_KEY] = Http2ServerProtocol
# Create a server
diff --git a/src/dubbo/remoting/aio/constants.py
b/src/dubbo/remoting/aio/constants.py
index 17712a8..103c184 100644
--- a/src/dubbo/remoting/aio/constants.py
+++ b/src/dubbo/remoting/aio/constants.py
@@ -18,6 +18,8 @@ __all__ = ["STREAM_HANDLER_KEY"]
STREAM_HANDLER_KEY = "stream-handler"
+LISTENER_FACTORY_KEY = "listener-factory"
+
CLOSE_FUTURE_KEY = "close-future"
HEARTBEAT_KEY = "heartbeat"
diff --git a/src/dubbo/remoting/aio/http2/protocol.py
b/src/dubbo/remoting/aio/http2/protocol.py
index a11f671..a762d0a 100644
--- a/src/dubbo/remoting/aio/http2/protocol.py
+++ b/src/dubbo/remoting/aio/http2/protocol.py
@@ -22,9 +22,11 @@ from typing import Optional
from h2.config import H2Configuration
from h2.connection import H2Connection
+from dubbo.constants import common_constants
from dubbo.loggers import loggerFactory
from dubbo.remoting.aio import ConnectionStateListener,
EmptyConnectionStateListener, constants as h2_constants
from dubbo.remoting.aio.exceptions import ProtocolError
+from dubbo.remoting.aio.http2.stream_handler import
StreamServerMultiplexHandler
from dubbo.remoting.aio.http2.controllers import RemoteFlowController
from dubbo.remoting.aio.http2.frames import (
DataFrame,
@@ -76,7 +78,11 @@ class AbstractHttp2Protocol(asyncio.Protocol, abc.ABC):
self._flow_controller: Optional[RemoteFlowController] = None
- self._stream_handler =
self._url.attributes[h2_constants.STREAM_HANDLER_KEY]
+ if self._url.attributes[common_constants.PROTOCOL_KEY] ==
Http2ServerProtocol:
+ listener_factory =
self._url.attributes[h2_constants.LISTENER_FACTORY_KEY]
+ self._stream_handler =
StreamServerMultiplexHandler(listener_factory)
+ else:
+ self._stream_handler =
self._url.attributes[h2_constants.STREAM_HANDLER_KEY]
# last time of receiving data
self._last_read = time.time()