gritz-native 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1acc3257753cf7f6cb65db29e2c77692136a2050044b225b2cc73880fe67e9d3
4
- data.tar.gz: 665dcaae2cc563da543b1305337cce4634d6094bfd39863ed09762765bae35c3
3
+ metadata.gz: 4e8049bb49561c6146900ca5fdf2f40177d4da3352b488c0c090b834f28a76bd
4
+ data.tar.gz: f55456efb1b318a0079ebf027b77f41d63413ca2abc723319804fe07ee403165
5
5
  SHA512:
6
- metadata.gz: 0ee1d520c991ea1b015215651b60a94071e73ccdf130b3e1bbf2982b4b72be90c448d3a2d89db82b37132f170bd6428455428f54d20be68c11f57a8b329be368
7
- data.tar.gz: b1f58698b7e9cd52e1c94bf170ecdee3bf2ebec81a0a9ed2e954b81d7369f1dd880104306c2067e3b9fccf8d96b4c7ad48a4e45b1e1429bdafef861c465b5c45
6
+ metadata.gz: 7a98685d7f3d10fefba9d156e0d5f182aed3a497e3886534e082449629e6420422ef614fbe8e0b0b793ae6ada7cdcd03e357ec58db0bf3826d7627615b32cd09
7
+ data.tar.gz: d5051b7e5a6739eac2d3be2b53316b0def376af8bfbe91c77958c1d554e1e08842d3a6a298f359a735ed736e3310e430e8c842ea00650900af4dd9f3be245173
data/CHANGELOG.md CHANGED
@@ -1,5 +1,10 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.2.0
4
+
5
+ - Detect native gRPC constructors in the master before fork.
6
+ - Support experimental Linux grpc fork callbacks for parent-side clients.
7
+
3
8
  ## 0.1.0
4
9
 
5
10
  Initial release.
data/README.md CHANGED
@@ -17,7 +17,7 @@ Gritz::Testing::Server.start(controllers: [GreeterController]) do |server|
17
17
  end
18
18
  ```
19
19
 
20
- The helper opens an ephemeral port and stops the server when the block exits. The server currently supports a single process and insecure sockets; use a trusted network or a TLS-terminating proxy. See the [framework documentation](https://github.com/gritzrpc/gritz) for configuration and limitations.
20
+ The helper opens an ephemeral port and stops the server when the block exits. The helper runs a single process. Supervised native servers also support forked workers on Linux. This release uses insecure sockets; use a trusted network or a TLS-terminating proxy. See the [framework documentation](https://github.com/gritzrpc/gritz) for configuration and limitations.
21
21
 
22
22
  ## Development
23
23
 
@@ -0,0 +1,10 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Constructor instrumentation installed without activating a master guard.
4
+ # @api private
5
+ module Gritz::Native::ForkGuard
6
+ [GRPC::Core::Channel, GRPC::Core::Server, GRPC::Core::ChannelCredentials,
7
+ GRPC::Core::ServerCredentials, GRPC::Core::CallCredentials, GRPC::ClientStub, GRPC::RpcServer].each do |klass|
8
+ Gritz::ForkGuard.install(klass)
9
+ end
10
+ end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Gritz
4
4
  module Native
5
- VERSION = "0.1.0"
5
+ VERSION = "0.2.0"
6
6
  end
7
7
  end
data/lib/gritz/native.rb CHANGED
@@ -6,6 +6,7 @@ require "google/rpc/status_pb"
6
6
  require "google/protobuf/any_pb"
7
7
  require "google/protobuf/well_known_types"
8
8
  require_relative "native/version"
9
+ require_relative "native/fork_guard"
9
10
  require_relative "transport/native"
10
11
  require_relative "transport/native/call"
11
12
  require_relative "transport/native/bridge"
@@ -10,6 +10,15 @@ module Gritz
10
10
  class Native
11
11
  def self.capabilities = Set[:unary, :client_streaming, :server_streaming, :bidi, :reuseport].freeze
12
12
 
13
+ def self.prefork
14
+ GRPC.prefork
15
+ rescue RuntimeError => e
16
+ raise "#{e.message}. fork_mode :grpc_fork_support requires GRPC_ENABLE_FORK_SUPPORT=1 before requiring grpc."
17
+ end
18
+
19
+ def self.postfork_parent = GRPC.postfork_parent
20
+ def self.postfork_child = GRPC.postfork_child
21
+
13
22
  def initialize(config:, dispatcher:, logger:)
14
23
  @config = config
15
24
  @dispatcher = dispatcher
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gritz-native
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yudai Takada
@@ -35,14 +35,14 @@ dependencies:
35
35
  requirements:
36
36
  - - '='
37
37
  - !ruby/object:Gem::Version
38
- version: 0.1.0
38
+ version: 0.2.0
39
39
  type: :runtime
40
40
  prerelease: false
41
41
  version_requirements: !ruby/object:Gem::Requirement
42
42
  requirements:
43
43
  - - '='
44
44
  - !ruby/object:Gem::Version
45
- version: 0.1.0
45
+ version: 0.2.0
46
46
  - !ruby/object:Gem::Dependency
47
47
  name: grpc
48
48
  requirement: !ruby/object:Gem::Requirement
@@ -75,6 +75,7 @@ files:
75
75
  - LICENSE.txt
76
76
  - README.md
77
77
  - lib/gritz/native.rb
78
+ - lib/gritz/native/fork_guard.rb
78
79
  - lib/gritz/native/version.rb
79
80
  - lib/gritz/testing/server.rb
80
81
  - lib/gritz/transport/native.rb
@@ -103,7 +104,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
103
104
  - !ruby/object:Gem::Version
104
105
  version: '0'
105
106
  requirements: []
106
- rubygems_version: 4.0.16
107
+ rubygems_version: 3.6.9
107
108
  specification_version: 4
108
109
  summary: gRPC C-core transport for Gritz
109
110
  test_files: []