rubypitaya 3.17.1 → 3.17.2

Sign up to get free protection for your applications and to get access to all the features.
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