rubypitaya 3.17.1 → 3.17.2

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: d3c8fb40d9e4a0f24d40d3399d23e1c739685147b49c17f5fdaf06b62d4f6f98
4
- data.tar.gz: 4b8e8fc959fec09eaf1a9c2cda02f9e8ed8512a184a86258e174c7f4417f0b68
3
+ metadata.gz: 83ca819c25297eb060cbe0e0f1b4e8bb8f69b981a5a9e9cc9f7026774bb90fec
4
+ data.tar.gz: cfc9294385aebc33497ea547ace19a6085cdf7b611f133ff8a8e97e444c21aa6
5
5
  SHA512:
6
- metadata.gz: ad42027f76cc415eb5c5956f6beda45660baed6f38c0e0b830d94bb60960e87a521194b598ba9576eed373ca72764f394f0da2d1b476241adacf8d13c4c6c9c2
7
- data.tar.gz: 6831faa8d987cb9bd6f467e061c8f72ab6db75227b92f76633a3df7778f6ae9c45ce96873ab8fa194f0a35273008d1fdc0a854066a3bfc7df21850e4d5329844
6
+ metadata.gz: 15b9c24c2a57d2d08f578e569d59ccdd9b1b72a358ba2b89821eac03e0b0005073ccc1badc60f54360cf5b7c00b3d7d86ecb7f70eb8a62be56cc3c9f19981a26
7
+ data.tar.gz: ee05134dd53af44e3e6d00bcf1ce26951692270e842966d4d58640ce6ca4bb9695485d1e99663d7bc5cc4210485b8b31ffad1ad105dfa8c8641a61d954701cee
@@ -1,6 +1,6 @@
1
1
  source "https://rubygems.org"
2
2
 
3
- gem 'rubypitaya', '3.17.1'
3
+ gem 'rubypitaya', '3.17.2'
4
4
 
5
5
  group :development do
6
6
  gem 'pry', '0.14.2'
@@ -105,7 +105,7 @@ GEM
105
105
  rspec-support (~> 3.12.0)
106
106
  rspec-support (3.12.1)
107
107
  ruby2_keywords (0.0.5)
108
- rubypitaya (3.17.1)
108
+ rubypitaya (3.17.2)
109
109
  activerecord (= 7.1.2)
110
110
  etcdv3 (= 0.11.6)
111
111
  google-protobuf (= 3.25.2)
@@ -144,7 +144,7 @@ DEPENDENCIES
144
144
  listen (= 3.8.0)
145
145
  pry (= 0.14.2)
146
146
  rspec (= 3.12.0)
147
- rubypitaya (= 3.17.1)
147
+ rubypitaya (= 3.17.2)
148
148
  sinatra-contrib (= 3.2.0)
149
149
 
150
150
  BUNDLED WITH
@@ -2,6 +2,7 @@ server:
2
2
  name: 'rubypitaya'
3
3
  environment: development
4
4
  cheats: true
5
+ threads: 5
5
6
 
6
7
  nats:
7
8
  url: 'nats://nats:4222'
@@ -22,7 +23,8 @@ database:
22
23
  name: 'ruby_pitaya'
23
24
 
24
25
  http:
26
+ enabled: true
25
27
  auth:
26
28
  user: 'user'
27
29
  pass: 'pass'
28
- enabled: 'false'
30
+ enabled: false
@@ -1,4 +1,4 @@
1
- FROM ruby:3.2.2-slim
1
+ FROM ruby:3.2.3-slim
2
2
 
3
3
  ENV LANG=C.UTF-8
4
4
  ENV LC_ALL=C.UTF-8
@@ -1,4 +1,4 @@
1
- FROM ruby:3.2.2-slim as builder
1
+ FROM ruby:3.2.3-slim as builder
2
2
 
3
3
  RUN apt update && \
4
4
  apt install -y --no-install-recommends \
@@ -26,7 +26,7 @@ RUN rm -rf /usr/local/bundle/cache && \
26
26
 
27
27
  # RUN curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl
28
28
 
29
- FROM ruby:3.2.2-slim
29
+ FROM ruby:3.2.3-slim
30
30
 
31
31
  ENV LANG=C.UTF-8
32
32
  ENV LC_ALL=C.UTF-8
@@ -79,6 +79,7 @@ module RubyPitaya
79
79
 
80
80
  def stop_renew_connection
81
81
  @renew_connection_thread.exit.join unless @renew_connection_thread.nil?
82
+ @renew_connection_thread = nil
82
83
  end
83
84
 
84
85
  def get_server_data
@@ -61,7 +61,7 @@ module RubyPitaya
61
61
  end
62
62
 
63
63
  def http_auth_enabled?
64
- return @setup.fetch('rubypitaya.http.auth.enabled') { 'false' } == 'true'
64
+ return @setup.fetch('rubypitaya.http.auth.enabled', false)
65
65
  end
66
66
 
67
67
  def get_http_auth
@@ -59,8 +59,9 @@ module RubyPitaya
59
59
  @etcd_connector.connect
60
60
 
61
61
  @nats_address = @setup['rubypitaya.nats.url']
62
+ @nats_n_threads = @setup['rubypitaya.server.threads']
62
63
  @nats_connector = NatsConnector.new(@nats_address, @service_uuid,
63
- @server_name)
64
+ @server_name, @nats_n_threads, @log)
64
65
 
65
66
  @database_connector = DatabaseConnector.new(@setup, @log)
66
67
  @database_connector.connect
@@ -99,6 +100,9 @@ module RubyPitaya
99
100
  end
100
101
 
101
102
  def run_http
103
+ is_http_enabled = @setup.fetch('rubypitaya.http.enabled', false)
104
+ return unless is_http_enabled
105
+
102
106
  HttpRoutes.set :log, @log
103
107
  HttpRoutes.set :services, @services
104
108
  HttpRoutes.set :setup, @setup
@@ -161,8 +165,7 @@ module RubyPitaya
161
165
 
162
166
  session_id = request[:session][:id]
163
167
  session_uid = request[:session].fetch(:uid, '')
164
- session_data = request[:session][:data]
165
- session_data = JSON.parse(session_data, symbolize_names: true)
168
+ session_data = JSON.parse(request[:session][:data], symbolize_names: true)
166
169
  frontend_id = request[:frontendID]
167
170
  metadata = request[:metadata]
168
171
  metadata = JSON.parse(metadata, symbolize_names: true)
@@ -15,10 +15,12 @@ module RubyPitaya
15
15
  MESSAGE_TYPE_RESPONSE = 2
16
16
  MESSAGE_TYPE_PUSH = 3
17
17
 
18
- def initialize(nats_address, server_uuid, server_name)
18
+ def initialize(nats_address, server_uuid, server_name, n_threads, log)
19
+ @nats_address = nats_address
19
20
  @server_uuid = server_uuid
20
21
  @server_name = server_name
21
- @nats_address = nats_address
22
+ @n_threads = n_threads
23
+ @log = log
22
24
  @nats = nil
23
25
  @subscribe = nil
24
26
  end
@@ -29,29 +31,49 @@ module RubyPitaya
29
31
  @nats = NATS.connect(servers: [@nats_address])
30
32
  @subscribe = @nats.subscribe(subscribe_topic)
31
33
 
34
+ @queue = Thread::Queue.new
35
+ @threads = []
36
+
37
+ @n_threads.times do |i|
38
+ @threads << Thread.new do
39
+ loop do
40
+ data, reply = @queue.pop
41
+
42
+ request = NatsRequest.decode(data).to_h
43
+
44
+ response = yield request
45
+
46
+ nats_response = NatsResponse.new(data: response.force_encoding('ascii-8bit'))
47
+ nats_response_encoded = NatsResponse.encode(nats_response)
48
+
49
+ @nats.publish(reply, nats_response_encoded)
50
+
51
+ rescue Exception => error
52
+ @log.error "NATS ERROR: #{error.message}} \n #{error.backtrace.join("\n")}"
53
+ end
54
+ end
55
+ end
56
+
32
57
  loop do
33
58
  message = @subscribe.pending_queue.pop
34
59
  @subscribe.synchronize do
35
60
  @subscribe.pending_size -= message.data.size
36
61
  end
37
62
 
38
- request = NatsRequest.decode(message.data).to_h
39
-
40
- response = yield request
41
-
42
- nats_response = NatsResponse.new(data: response.force_encoding('ascii-8bit'))
43
- nats_response_encoded = NatsResponse.encode(nats_response)
44
-
45
- @nats.publish(message.reply, nats_response_encoded)
63
+ @queue << [message.data, message.reply]
46
64
  end
47
65
  end
48
66
 
49
67
  def disconnect
50
68
  @subscribe.unsubscribe unless @subscribe.nil?
51
69
  @nats.close unless @nats.nil?
70
+ @threads.map(&:kill) unless @threads.nil?
71
+ @queue.close unless @queue.nil?
52
72
 
53
- @nats = nil
54
73
  @subscribe = nil
74
+ @nats = nil
75
+ @queue = nil
76
+ @threads = nil
55
77
  end
56
78
 
57
79
  def push_to_frontend(session, message_route, payload)
@@ -1,3 +1,3 @@
1
1
  module RubyPitaya
2
- VERSION = '3.17.1'
2
+ VERSION = '3.17.2'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rubypitaya
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.17.1
4
+ version: 3.17.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Luciano Prestes Cavalcanti
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-01-17 00:00:00.000000000 Z
11
+ date: 2024-04-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: pg
@@ -16,42 +16,42 @@ dependencies:
16
16
  requirements:
17
17
  - - '='
18
18
  - !ruby/object:Gem::Version
19
- version: 1.5.4
19
+ version: 1.5.6
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - '='
25
25
  - !ruby/object:Gem::Version
26
- version: 1.5.4
26
+ version: 1.5.6
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - '='
32
32
  - !ruby/object:Gem::Version
33
- version: 13.1.0
33
+ version: 13.2.1
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - '='
39
39
  - !ruby/object:Gem::Version
40
- version: 13.1.0
40
+ version: 13.2.1
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: redis
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - '='
46
46
  - !ruby/object:Gem::Version
47
- version: 5.0.8
47
+ version: 5.1.0
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - '='
53
53
  - !ruby/object:Gem::Version
54
- version: 5.0.8
54
+ version: 5.1.0
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: etcdv3
57
57
  requirement: !ruby/object:Gem::Requirement
@@ -128,14 +128,14 @@ dependencies:
128
128
  requirements:
129
129
  - - '='
130
130
  - !ruby/object:Gem::Version
131
- version: 7.1.2
131
+ version: 7.1.3.2
132
132
  type: :runtime
133
133
  prerelease: false
134
134
  version_requirements: !ruby/object:Gem::Requirement
135
135
  requirements:
136
136
  - - '='
137
137
  - !ruby/object:Gem::Version
138
- version: 7.1.2
138
+ version: 7.1.3.2
139
139
  - !ruby/object:Gem::Dependency
140
140
  name: google-protobuf
141
141
  requirement: !ruby/object:Gem::Requirement
@@ -170,56 +170,56 @@ dependencies:
170
170
  requirements:
171
171
  - - '='
172
172
  - !ruby/object:Gem::Version
173
- version: 3.12.0
173
+ version: 3.13.0
174
174
  type: :development
175
175
  prerelease: false
176
176
  version_requirements: !ruby/object:Gem::Requirement
177
177
  requirements:
178
178
  - - '='
179
179
  - !ruby/object:Gem::Version
180
- version: 3.12.0
180
+ version: 3.13.0
181
181
  - !ruby/object:Gem::Dependency
182
182
  name: listen
183
183
  requirement: !ruby/object:Gem::Requirement
184
184
  requirements:
185
185
  - - '='
186
186
  - !ruby/object:Gem::Version
187
- version: 3.8.0
187
+ version: 3.9.0
188
188
  type: :development
189
189
  prerelease: false
190
190
  version_requirements: !ruby/object:Gem::Requirement
191
191
  requirements:
192
192
  - - '='
193
193
  - !ruby/object:Gem::Version
194
- version: 3.8.0
194
+ version: 3.9.0
195
195
  - !ruby/object:Gem::Dependency
196
196
  name: bundler
197
197
  requirement: !ruby/object:Gem::Requirement
198
198
  requirements:
199
199
  - - '='
200
200
  - !ruby/object:Gem::Version
201
- version: 2.4.10
201
+ version: 2.4.19
202
202
  type: :development
203
203
  prerelease: false
204
204
  version_requirements: !ruby/object:Gem::Requirement
205
205
  requirements:
206
206
  - - '='
207
207
  - !ruby/object:Gem::Version
208
- version: 2.4.10
208
+ version: 2.4.19
209
209
  - !ruby/object:Gem::Dependency
210
210
  name: cucumber
211
211
  requirement: !ruby/object:Gem::Requirement
212
212
  requirements:
213
213
  - - '='
214
214
  - !ruby/object:Gem::Version
215
- version: 9.1.1
215
+ version: 9.2.0
216
216
  type: :development
217
217
  prerelease: false
218
218
  version_requirements: !ruby/object:Gem::Requirement
219
219
  requirements:
220
220
  - - '='
221
221
  - !ruby/object:Gem::Version
222
- version: 9.1.1
222
+ version: 9.2.0
223
223
  - !ruby/object:Gem::Dependency
224
224
  name: sinatra-contrib
225
225
  requirement: !ruby/object:Gem::Requirement
@@ -387,7 +387,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
387
387
  - !ruby/object:Gem::Version
388
388
  version: '0'
389
389
  requirements: []
390
- rubygems_version: 3.4.10
390
+ rubygems_version: 3.4.19
391
391
  signing_key:
392
392
  specification_version: 4
393
393
  summary: Create servers with pitaya