[
https://issues.apache.org/jira/browse/IGNITE-29256?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18141187#comment-18141187
]
Anton Vinogradov commented on IGNITE-29256:
-------------------------------------------
[Ignite PR Checker|https://ignite-pr-checker.is-a.dev/?pr=13795] verdict for PR
13795 · RunAll build [9481954|https://ci2.ignite.apache.org/build/9481954] ·
tested
[a00342f|https://github.com/apache/ignite/pull/13795/commits/a00342f1b0bb46463b53f080fb525fdf5649080d]
· 149 suites ran, 0 reused
(/) *No blockers* — nothing in this run looks caused by this PR. 33 failing
tests are not blamed on this PR.
_What each label means and what to do: [verdict
glossary|https://github.com/anton-vinogradov/ignite-pr-checker/blob/main/docs/features.md#verdict-glossary]._
♻️ Settled after 2 auto re-run waves: #1 — 9 suites that failed mid-run; #2 — 1
suite with tests that started failing.
> Use the factory's current SSL context for new TCP connections
> -------------------------------------------------------------
>
> Key: IGNITE-29256
> URL: https://issues.apache.org/jira/browse/IGNITE-29256
> Project: Ignite
> Issue Type: Sub-task
> Reporter: Anton Vinogradov
> Assignee: Anton Vinogradov
> Priority: Major
> Time Spent: 1.5h
> Remaining Estimate: 0h
>
> IGNITE-29209 lets a factory replace its cached SSL context. Outgoing
> communication already obtains that context for each connection. Discovery,
> incoming communication, the client connector and binary REST retain the
> startup context, so replacing the factory cache does not change the keys or
> trust used by their new connections. The Java thin client also retains the
> context obtained at client startup.
> Make these transports use the replacement. The administrator command follows
> in IGNITE-29210; this ticket verifies reload through the factory API.
> h3. What to change
> # Obtain the context from the configured {{Factory<SSLContext>}} for every
> new TCP connection. Cover both directions of discovery and communication,
> plus the client connector and binary REST.
> # Keep established connections open. While {{AbstractSslContextFactory}}
> loads replacement material, or if loading fails, new connections must use its
> previous context. Preserve server mode, client authentication, handshake
> timeouts, protocols, cipher suites and startup validation.
> # Make the Java thin client obtain its context from its configured factory
> for each new connection. Without a configured factory, keep loading the
> context from client settings only once.
> # Use one discovery socket path for all factory types.
> # Treat discovery context lookup and TLS setup failures as connection
> failures, keeping the original cause. An incoming failure must close only the
> accepted socket; an outgoing failure must leave discovery retries available.
> # In NIO, a context lookup failure must close only the affected session and
> leave the worker running. Count it once in the existing
> {{RejectedSslSessionsCount}} metric.
> h3. Custom factories and compatibility
> Node transports call the configured {{Factory<SSLContext>}} at startup. All
> affected transports, including the Java thin client, call {{create()}} for
> new connections, including on NIO threads. The thin client first calls its
> factory when connecting; a failure must be reported as a connection error
> with the original cause. Calls can run concurrently. Factories control
> context reuse; slow loading in {{create()}} delays network processing.
> Custom discovery contexts must support unconnected SSL sockets, TLS wrapping
> of an accepted socket and server mode. Settings supplied only by a custom
> server socket factory no longer affect discovery connections.
> Remove the protected {{TcpDiscoverySpi.sslSockFactory}} and
> {{sslSrvSockFactory}} fields; connections no longer use them. This breaks
> source and binary compatibility for subclasses that access them. Those
> subclasses must be adapted and rebuilt.
> h3. Done when
> * A factory exposed as {{Factory<SSLContext>}} supplies replacement keys and
> trust on every TCP transport, including both directions of discovery and
> communication.
> * Established connections stay usable. New connections use the old material
> while {{AbstractSslContextFactory}} loads a replacement or after loading
> fails.
> * Invalid discovery TLS parameters prevent even the first node from starting,
> before a peer connection is needed.
> * After an injected lookup or socket-setup failure, discovery can accept or
> create the next connection. An NIO lookup failure leaves the worker usable
> and increases the rejection counter exactly once.
> * The same Java thin client reconnects using replacement keys and trust from
> its factory. A client without a configured factory reconnects without
> rereading its key store.
> Depends on IGNITE-29209. The command, scheduling and HTTP REST are separate
> tickets.
> [Implementation plan in PR #13795|https://github.com/apache/ignite/pull/13795]
--
This message was sent by Atlassian Jira
(v10.3.26#10030026)