Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  • #5270 created 6/17/2020 (closed)
  • #6063 created 2/27/2021 OPEN(closed)
  • #6101 created 3/8/2021 (draft) closed)
  • #6156 created 3/18/2021 OPEN

The ticket centers on the max-threads configuration property. By default, Geode client-server communications start a new server-side thread for each new client connection. That server-side logic uses “old I/O” i.e. blocking I/O where each server-side task gets its own dedicated thread and blocks on socket read (and write.) But when max-threads is specified, a separate code path is used to sever the tight coupling between server-side tasks and threads. In that case “new I/O” is used. A Selector is used to share a pool of threads among a potentially much larger set of server-side tasks.

...

By modifying the code serving case (2) to support both that case and case (4) we run the risk of breaking functionality (and performance) for users already relying on case (2). See below for mitigations.


Current status is that we have 2 stable PRs (all test are passing):

  • #6063 - solution implements the decision to modify PATH #2 (call the modified path: PATH #2a) to use an NioFilter with essentially a null cipher  for case (2) and a non-null cipher (NioSslEngine) for case (4), the new case.
  • #6156 - solution implements the decision to modify PATH #2  to use an NioFilter with essentially  (the NioPlainEngine) for case (2) and a (NioSslEngine) for case (4), the new case.

Next step could be performance tests, to see which alternative is better.

Changes and Additions to Public Interfaces

...