1. 21 Jun, 2022 1 commit
  2. 08 Jun, 2022 1 commit
  3. 17 May, 2022 2 commits
    • Tigran Mkrtchyan's avatar
      rpc: add unit tests for RpcDispatcher · 6061c9f4
      Tigran Mkrtchyan authored
      Result:
      more test coverage
      
      Acked-by: Paul Millar
      Target: master
      6061c9f4
    • Tigran Mkrtchyan's avatar
      rpc: introduce OncRpcSvcBuilder#withCallInterceptor · 9ca5fe11
      Tigran Mkrtchyan authored
      Motivation:
      Sometimes code need to perform an action before RPC request is executed,
      for example:
      
      - logging
      - validation
      - DoS protection / rate limitation
      
      ```
        limiter = RateLimiter.create(500);
      
        svc = new OncRpcSvcBuilder()
              .withServiceName("svc")
              .withCallInterceptor(c -> limiter.acquire())
              .build();
        svc.start();
      ```
      
      Modification:
      introduce OncRpcSvcBuilder#withCallInterceptor that injects a RPC call
      consumer that is called before real work is done.
      
      Result:
      additional actions can be performed before rpc call execution.
      
      Acked-by: Lea Morschel
      Acked-by: Paul Millar
      Target: master
      9ca5fe11
  4. 10 Jan, 2022 3 commits
  5. 05 Jan, 2022 1 commit
    • Tigran Mkrtchyan's avatar
      gss: don't use grizzly buffer without need · 87985bea
      Tigran Mkrtchyan authored
      Motivation:
      to reduce dependency on grizzly don't use grizzly specific Buffer
      without need.
      
      Modification:
      Update RpcAuthGss to expose packet header as java.nio.ByteBuffer
      
      Result:
      less dependency on grizzly
      
      Acked-by: Paul Millar
      Acked-by: Lea Morschel
      Target: master
      87985bea
  6. 23 Dec, 2021 1 commit
    • Tigran Mkrtchyan's avatar
      rpc: introduce RpcTransport#isTLS · 7ecf6866
      Tigran Mkrtchyan authored
      Motivation:
      In some situations client or server wants to now if TLS in applied on
      the connection, for example before sending the data over the wire or
      for data protection validation.
      
      Modification:
      introduced  RpcTransport#isTLS that checks existence if SSLFilter in
      the grizzly pipeline.
      
      Result:
      simple way to check TLS status of a connection.
      
      target: master
      Acked-by: Lea Morschel
      7ecf6866
  7. 14 Dec, 2021 1 commit
  8. 13 Dec, 2021 2 commits
    • Tigran Mkrtchyan's avatar
      pom: use java-17 capable jacoco-0.8.7 · e04037d9
      Tigran Mkrtchyan authored
      time to mover forward
      
      Acked-by: Lea Morschel
      Target: master
      e04037d9
    • Tigran Mkrtchyan's avatar
      rpc-over-tls: use per-connection STARTTLS attribute · ec08f5d3
      Tigran Mkrtchyan authored
      Motivation:
      The StartTlsFilter holds a state to indicates that TLS handshake should
      be started. This state currently shared by all connections forcing all
      following connections to start TLS handshake, even if not requested.
      
      Modification:
      Use Connection object's attribute store to hold connection specific
      flag. As we only interested in a on/off flag a dummy object is used as a
      value.
      
      Result:
      An earlier tls session has no influence on a following one.
      
      Fixes: #95
      Acked-by: Paul Millar
      Target: master
      ec08f5d3
  9. 29 Sep, 2021 1 commit
    • Tigran Mkrtchyan's avatar
      pom: use grizzly-3.0.0 · 50ad1f0d
      Tigran Mkrtchyan authored
      Motivation:
      use up-to-date release with bugfixes and enhancements.
      
      Modification:
      use grizzly-3.0.0
      
      Result:
      up-to-date dependency. no visible changes
      
      Acked-by: Lea Morschel
      Target: master
      50ad1f0d
  10. 13 Aug, 2021 2 commits
  11. 07 Jun, 2021 1 commit
    • Tigran Mkrtchyan's avatar
      rpc: add RpcCall#startTLS to simplify the API · cf298a57
      Tigran Mkrtchyan authored
      Motivation:
      The API to start TLS handshake is not handy as requires an extra RPC
      NULL call.
      
      Modification:
      introduce RpcCall#startTLS to encapsulate the RPC NULL call.
      
      Result:
      a slightly better API
      
      Acked-by: Lea Morschel
      Target: master
      cf298a57
  12. 27 Apr, 2021 1 commit
  13. 05 Jan, 2021 1 commit
    • Tigran Mkrtchyan's avatar
      rpc: drop SimpleRpcClient and SimpleRpcServer · f67311c8
      Tigran Mkrtchyan authored
      Motivation:
      Test code doesn't belong to the main library.
      
      Modification:
      remove SimpleRpcClient and SimpleRpcServer. Add corresponding benchmark
      that provides the same functionality.
      
      Result:
      no test code in the core library.
      
      Acked-by: Lea Morschel
      Acked-by: Paul Millar
      Target: master
      f67311c8
  14. 04 Jan, 2021 1 commit
  15. 28 Dec, 2020 1 commit
  16. 18 Dec, 2020 1 commit
    • Tigran Mkrtchyan's avatar
      rpcsvc: use try-with-resource when updating portmap · 2d47552e
      Tigran Mkrtchyan authored
      Motivation:
      As OncRpcClient implements AutoCloseable interface, using in
      try-with-resource block is more natural than try-finally
      
      Modification:
      update OncRpcSvc#publishToPortmap and OncRpcSvc#clearPortmap to make use
      of try-with-resource construction.
      
      Result:
      more simple and up-to-date logic
      
      Acked-by: Lea Morschel
      Acked-by: Albert Rossi
      Acked-by: Paul Millar
      Target: master
      2d47552e
  17. 16 Dec, 2020 1 commit
  18. 08 Dec, 2020 1 commit
    • Tigran Mkrtchyan's avatar
      oncrpc: add ability to control memory allocator · c4b9961f
      Tigran Mkrtchyan authored
      Motivation:
      The RPC messages might have different sizes and purposes. Some of
      them and small, others are big, for example nfs GETATTR call/reply
      are ~128 byes, but IO requests like READ and WRITE might be 1MB big.
      Moreover, the data used by IO requests are often read from or written
      to disk through java NIO API. Thus direct byte buffers are preferred.
      
      Modification:
      Add a possibility to control the memory allocation policy. Update
      OncRpcSvcBuilder to expose new functionality, by preserving default
      behavior.
      
      Result:
      More flexible memory management with rule of thumb:
      
      For small requests use HEAP allocator. In other cases POOLED
      has a better performance.
      
      AllocatorBenchmark.allocate           heap        128  thrpt   20  49791239.209 ± 122939.377  ops/s
      AllocatorBenchmark.allocate             bb        128  thrpt   20  31980902.534 ± 130232.954  ops/s
      AllocatorBenchmark.allocate  pooled-direct      16384  thrpt   20  18150104.447 ±  94087.140  ops/s
      AllocatorBenchmark.allocate  pooled-direct        128  thrpt   20  18083772.708 ± 231314.463  ops/s
      AllocatorBenchmark.allocate  pooled-direct       1024  thrpt   20  18051147.691 ±  75325.348  ops/s
      AllocatorBenchmark.allocate         pooled      16384  thrpt   20  12510167.658 ± 189768.727  ops/s
      AllocatorBenchmark.allocate         pooled        128  thrpt   20  11313056.455 ± 101182.275  ops/s
      AllocatorBenchmark.allocate         pooled       1024  thrpt   20  10704443.770 ± 417986.884  ops/s
      AllocatorBenchmark.allocate           heap       1024  thrpt   20  10039347.620 ±  21660.670  ops/s
      AllocatorBenchmark.allocate             bb       1024  thrpt   20   9731756.363 ± 111935.133  ops/s
      AllocatorBenchmark.allocate      bb-direct        128  thrpt   20   1167915.132 ± 303779.958  ops/s
      AllocatorBenchmark.allocate             bb      16384  thrpt   20   1103752.015 ±   4981.959  ops/s
      AllocatorBenchmark.allocate           heap      16384  thrpt   20   1096764.395 ±   3383.219  ops/s
      AllocatorBenchmark.allocate      bb-direct       1024  thrpt   20    942751.899 ±  63066.509  ops/s
      AllocatorBenchmark.allocate  pooled-direct    1048576  thrpt   20    806817.161 ±  15408.086  ops/s
      AllocatorBenchmark.allocate         pooled    1048576  thrpt   20    690660.597 ±   6888.734  ops/s
      AllocatorBenchmark.allocate      bb-direct      16384  thrpt   20    488973.714 ±   6925.715  ops/s
      AllocatorBenchmark.allocate      bb-direct    1048576  thrpt   20     15487.488 ±     70.131  ops/s
      AllocatorBenchmark.allocate           heap    1048576  thrpt   20     14889.964 ±    113.748  ops/s
      AllocatorBenchmark.allocate             bb    1048576  thrpt   20     14884.161 ±    142.970  ops/s
      
      Target: master
      Acked-by: Albert Rossi
      Acked-by: Paul MiLlar
      c4b9961f
  19. 30 Nov, 2020 1 commit
  20. 26 Nov, 2020 1 commit
  21. 25 Nov, 2020 1 commit
  22. 28 Oct, 2020 1 commit
  23. 27 Oct, 2020 1 commit
  24. 19 Oct, 2020 1 commit
  25. 13 Oct, 2020 2 commits
  26. 16 Jun, 2020 2 commits
  27. 23 Apr, 2020 2 commits
  28. 11 Feb, 2020 2 commits
  29. 05 Feb, 2020 1 commit
  30. 03 Feb, 2020 1 commit
  31. 07 Jan, 2020 1 commit
    • Tigran Mkrtchyan's avatar
      rpc: change ABI to have more predictable client behaviour · c66adbfd
      Tigran Mkrtchyan authored
      Motivation:
      
      RpcCall#call(proc, args, callback, auth) method throws EOFException
      when no callback is provided and client is disconnected. However,
      there is no guarantee, that after call is complete client is still
      able to send the request. IOW, it client code depends on message
      delivery, then callback have to be provided.
      
      Modification:
      update RpcCall#call not to check connection status.
      
      Result:
      more predictable client behaviour. NOTICE, that current code, which
      expect such functionality is now broken, but it broken by design anyway.
      
      Acked-by: Paul Millar
      Target: master
      c66adbfd