basicjrpc 0.1.31 → 0.1.32

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
  SHA1:
3
- metadata.gz: 203bcf05fa75bb27c94d3d9d14dd978d48645d20
4
- data.tar.gz: 7b3411a5576e196e12c15ee4f01a35a3ccd96ef5
3
+ metadata.gz: 2418cb1148189c391005749334e2fe9e7b87036b
4
+ data.tar.gz: 3619e7f940db3e2f5cf851e73ae27847fa7697fc
5
5
  SHA512:
6
- metadata.gz: 6b3acaa696fb6e415c2ba1c7bc5e772110e0f4c60194ca4a207893b5e46f43d560a329cf5d568ec82789f59928fb179447ad8b7147f085e725e0eccf217265e8
7
- data.tar.gz: fff9e4aff8c96ec007b4bba10630263083d693647d5eab5043e7ea2df2a320d9539c188dee485da6404427804b280cdb27ec707117a95105b3ab34958bd7c1d1
6
+ metadata.gz: 3436a59c73df61b4e09d34fa843947dda305d12b7c6bcb9993a9a48e60a255d8ea00ad1016be1fc15fd08153391cd124d4f21bb6d54d88673cb62d53192f137c
7
+ data.tar.gz: a588da73a917506f97cb5c06ea937578796ad1c1b38ef9d28bf177a12a049949b161da0b3e636d0ac839d303f7fdb04f211511a57ce75e20d5cd3a6ff5b84060
@@ -1,5 +1,11 @@
1
1
  require 'timeout'
2
2
 
3
+
4
+ ##### WARNING
5
+ ##### WARNING
6
+ ##### THERE IS NO DEAD-CLIENT PROTECTION
7
+ ##### THIS WILL DAMAGE UPSTREAM REQUESTS UNTIL RELOADED
8
+
3
9
  module BasicJRPC
4
10
 
5
11
  # Responding Client
@@ -13,27 +19,30 @@ module BasicJRPC
13
19
  end
14
20
 
15
21
  def method_missing(m, *args, &block)
16
- send_request({ :method_name => m, :method_arguments => args })
22
+ send_request({ :method_name => m, :method_arguments => args, :callers => caller.first(10) })
17
23
  end
18
24
 
19
25
  def send_request payload
20
-
21
26
  payload[:message_id] = SecureRandom.uuid
22
27
  payload[:instance_id] = @instance_id
23
28
  payload[:response] = true
24
29
 
25
30
  my_message = false
26
31
 
32
+ puts "Writing Message #{payload[:message_id]} #{payload[:method_name]}"
27
33
  @nsq_producer.write(Oj.dump(payload))
28
34
 
29
35
  Timeout::timeout(5) {
30
36
  Oj.load(Redis.new(host: "redis").blpop(payload[:message_id])[1])
31
37
  }
38
+ rescue Exception => e
39
+ terminate
40
+ raise e
32
41
  end
33
42
 
34
43
  # This must be called
35
44
  def terminate
36
- nsq_producer.terminate
45
+ @nsq_producer.terminate
37
46
  end
38
47
  end
39
48
 
@@ -42,7 +51,11 @@ module BasicJRPC
42
51
  def send_request payload
43
52
  payload[:message_id] = SecureRandom.uuid
44
53
  payload[:response] = true
54
+ payload[:caller] = caller.first(10)
45
55
  @nsq_producer.write(Oj.dump(payload))
56
+ rescue Exception => e
57
+ terminate
58
+ raise e
46
59
  end
47
60
  end
48
61
 
@@ -12,7 +12,7 @@ module BasicJRPC
12
12
  while true
13
13
  message = @nsq_consumer.pop
14
14
  payload = Oj.load(message.body)
15
- puts "Processing message #{payload.method_name} #{payload.method_arguments}"
15
+ puts "Processing message #{payload.method_id} #{payload.method_name} #{payload.method_arguments} #{payload.callers}"
16
16
 
17
17
  # Should always return a data object
18
18
  response = @injected_class.send(payload.method_name, *payload.method_arguments)
@@ -20,6 +20,14 @@ module BasicJRPC
20
20
  Redis.new(host: "redis").rpush(payload.message_id, Oj.dump(response))
21
21
  message.finish
22
22
  end
23
+ rescue Exception => e
24
+ message.finish
25
+ terminate
26
+ raise e
27
+ end
28
+
29
+ def terminate
30
+ @nsq_consumer.terminate
23
31
  end
24
32
 
25
33
  end
@@ -1,3 +1,3 @@
1
1
  module BasicJRPC
2
- VERSION = "0.1.31"
2
+ VERSION = "0.1.32"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: basicjrpc
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.31
4
+ version: 0.1.32
5
5
  platform: ruby
6
6
  authors:
7
7
  - Martin Simpson
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-09-13 00:00:00.000000000 Z
11
+ date: 2016-09-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler