kenhuuu opened a new pull request, #3461:
URL: https://github.com/apache/tinkerpop/pull/3461

   Each Cluster.transact() previously built its own ClusteredClient, which 
stood up a full set of per-host connection pools and then tore them down on 
every commit/rollback. That cost memory and added connection-setup latency 
(TCP/TLS handshake) to every transaction, even though a transaction only ever 
talks to one host.
   
   Transactions don't need their own pools or a dedicated connection: the 
server binds each request to its transaction via the transaction id, and the 
HTTP model returns a connection to the pool as soon as the response completes. 
So a transaction only needs to pin to a host, not hold a connection. This lets 
all transactions share a single, eagerly created ClusteredClient and borrow a 
connection per request from the pinned host's warm pool, giving transaction 
requests the same connection occupancy as normal query traffic.
   
   While reworking PinnedClient:
   - Host selection now delegates to the cluster's LoadBalancingStrategy so 
transactions honor the configured strategy and skip unavailable hosts instead 
of picking a random (possibly dead) host.
   - closeAsync() no longer tears down pools. The pools belong to the shared 
client and are closed with the Cluster, after open transactions are rolled 
back; closing one transaction must not break its siblings.
   
   <!--
   Thanks for contributing! Reminders:
   + TARGET the earliest branch where you want the change
       3.7-dev -> 3.7.7 (non-breaking only)
       3.8-dev -> 3.8.2 (non-breaking only)
       master  -> 4.0.0
   + Committers will MERGE the PR forward to newer versions
   + ADD entry to the CHANGELOG.asciidoc for the targeted version
       Do not reference a JIRA number there
   + ADD JIRA number to title and link in description
   + PRs requires 3 +1s from committers OR
                  1 +1 and 7 day wait to merge.
   + MORE details: https://s.apache.org/rtnal
   -->


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to