istox 0.2.14 → 0.2.15

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: ca1e8a56cf58ec65db8e7c74bce91228a9c58f6fac41fba4dd8569263fe293ae
4
- data.tar.gz: e222955b4c24d1422f43cccc266251d77bf79322df1d3b6e24c7e8e598ced3cd
3
+ metadata.gz: 5dcf442cd8dd270827e55bcc957f9fa2862c04d390d5c1582097fae1638e673a
4
+ data.tar.gz: aed8de1bf449846ef9697364897ac0895215362c5413f444538858fd4cdf9a6d
5
5
  SHA512:
6
- metadata.gz: 293000d6656fc803c265a7dd025824a782895bb86d50c4b9e64f1c3a53b64695c68b5b72498aeff9750a800522368811371bf5d6657b2a7b39fb531141d33ca5
7
- data.tar.gz: a12c26ffb85108b2b664245f57e5cf86dbd6a3dbc952dcf5c06d3d01fff1bcdeaffd5a68792c172bfd4722166dac74d26fdaaa2887afe6c154c63b2860fa22d7
6
+ metadata.gz: 72b97430930b5d79fa173ea9720ffbb479a8313857d6206f9c114190f6a2ce50b770685d395cb7e12456351829b937943b00d98df87cbfd8eca87c241bb631ba
7
+ data.tar.gz: eb27d9d006914505ef2bb16cda935a57fb03481c6e3035191bb7e888eb417afcde41a0893e511f72425b8860364546e3ae5fedb91ef66e6fb093467a88574af1
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- istox (0.2.13)
4
+ istox (0.2.15)
5
5
  amazing_print
6
6
  awesome_print
7
7
  aws-sdk-sns (~> 1)
@@ -134,7 +134,7 @@ GEM
134
134
  ffi (1.15.3)
135
135
  globalid (0.4.2)
136
136
  activesupport (>= 4.2.0)
137
- google-protobuf (3.17.3)
137
+ google-protobuf (3.17.3-universal-darwin)
138
138
  googleapis-common-protos-types (1.1.0)
139
139
  google-protobuf (~> 3.14)
140
140
  graphlient (0.5.0)
@@ -145,7 +145,7 @@ GEM
145
145
  graphql-client (0.16.0)
146
146
  activesupport (>= 3.0)
147
147
  graphql (~> 1.8)
148
- grpc (1.38.0)
148
+ grpc (1.38.0-universal-darwin)
149
149
  google-protobuf (~> 3.15)
150
150
  googleapis-common-protos-types (~> 1.0)
151
151
  grpc-tools (1.38.0)
@@ -44,6 +44,9 @@ module Istox
44
44
  ## for request there we need a lock to prevent there is not duplicate request exist for single model
45
45
  ::Istox::RaceConditionHelper.acquire!(key) if is_request
46
46
 
47
+ ## validate the request, this validation is overridable by inherited class
48
+ receipt.validate_request!(model.class.name, model.id) if is_request
49
+
47
50
  # delete the previous existing blockchain receipts
48
51
  klass.where(resource_name: model.class.name, resource_id: model.id).destroy_all
49
52
 
@@ -10,12 +10,26 @@ module Istox
10
10
  def acquire(key, expired_seconds: 20)
11
11
  result = request_redis.set('race-condition||' + key.to_s, 'EMPTY', nx: true, ex: expired_seconds.to_i.seconds)
12
12
 
13
+ log.info("Acquiring lock for key: #{key}, expired in #{expired_seconds} seconds, result: #{result}")
14
+
13
15
  # if result false means the key already exist
14
- result
16
+ [true, 1].include?(result)
15
17
  end
16
18
 
17
19
  def release(key)
18
20
  request_redis.del('race-condition||' + key.to_s)
21
+
22
+ log.info("Releasing lock for key: #{key}")
23
+ end
24
+
25
+ ### lock with block
26
+ def lock!(key, expired_seconds: 20)
27
+ acquire!(key, expired_seconds: expired_seconds)
28
+ yield
29
+ release(key)
30
+ rescue StandardError => e
31
+ release(key)
32
+ raise e
19
33
  end
20
34
 
21
35
  def request_redis
@@ -5,5 +5,7 @@ module Istox
5
5
  def activity
6
6
  I18n.t("#{resource_name}.#{resource_action}") if resource_name.present? && resource_action.present?
7
7
  end
8
+
9
+ def validate_request!(model_name, model_id); end
8
10
  end
9
11
  end
data/lib/istox/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Istox
2
- VERSION = '0.2.14'.freeze
2
+ VERSION = '0.2.15'.freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: istox
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.14
4
+ version: 0.2.15
5
5
  platform: ruby
6
6
  authors:
7
7
  - Siong Leng
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-07-28 00:00:00.000000000 Z
11
+ date: 2021-08-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: amazing_print