deb-s3-lock-fix 0.11.8.fix0.2 → 0.11.8.fix0.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/deb/s3/lock.rb +40 -0
  3. metadata +1 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: cc8f9ac162ff914d4234a5d38a4b6c47107e0b16958a7b934dcb88befc329b75
4
- data.tar.gz: 2f7dd2fb39fd541dab59452696023dae3c6e4e8274663f8a80ff70cfa99bef07
3
+ metadata.gz: 96bae859e8570813b3ca71a774182b49e1b710ba753c4e2b248b29316ae31523
4
+ data.tar.gz: 4e8dc1299ae006258ed0745dda5f9804c7ff0215fa26a405d27c136ae05896c5
5
5
  SHA512:
6
- metadata.gz: 3b0f3a542f97416f5011a376d517f22d1def612640d25b17259cded08eabfa397a4a9d07a7f0f3ef8a6e674adf7da46f6697d61f82a494a851b757b756fa8b72
7
- data.tar.gz: 0db5466f75e6d8acbcc5d4a6c1f4aa0a135dd5cc71773a09679e02682e6ffea368ce61e94e4dc510e2f04abe55092206c2c5f9d098b11bb6eb558c0f0cf50f19
6
+ metadata.gz: 45c9aabade8123c3d499ece078b56e2e2eaf3b501d5c0229254d872f16008af36894d7664ec8258fa33e9031cfcbcdda1348db55302c3d6f327d5d90cc92268d
7
+ data.tar.gz: 624c33b41c7c0710ded488dd97ee23b7d938444de922b20bd25a8c7b6453500fe6bc8c3996d772294030bdf1bba8d36f24d7f71225578402646c6ad16a5db15a
data/lib/deb/s3/lock.rb CHANGED
@@ -39,6 +39,7 @@ class Deb::S3::Lock
39
39
  $stderr.puts("Current job's hostname with UUID: #{lock_body}")
40
40
 
41
41
  max_attempts.times do |i|
42
+ delete_expired_lock(bucket, codename)
42
43
  wait_interval = [2**i, max_wait_interval].min
43
44
 
44
45
  expiration_time = Time.now.to_i + 45
@@ -91,6 +92,45 @@ class Deb::S3::Lock
91
92
  end
92
93
  end
93
94
 
95
+ def delete_expired_lock(bucket, codename)
96
+ response = dynamodb.get_item({
97
+ table_name: DYNAMODB_TABLE_NAME,
98
+ key: {
99
+ 'lock_key' => "#{bucket}/#{codename}"
100
+ }
101
+ })
102
+
103
+ return unless response.item
104
+
105
+ if response.item['ttl'] && Time.now.to_i > response.item['ttl'].to_i
106
+ lockdata = response.item['lock_body']
107
+ user, _ = lockdata.split("@", 2)
108
+
109
+ delete_response = nil
110
+
111
+ begin
112
+ delete_response = dynamodb.delete_item({
113
+ table_name: DYNAMODB_TABLE_NAME,
114
+ key: {
115
+ 'lock_key' => "#{bucket}/#{codename}"
116
+ },
117
+ return_values: 'ALL_OLD'
118
+ })
119
+ rescue Aws::DynamoDB::Errors::ServiceError => e
120
+ $stderr.puts("Error deleting lock: #{e.message}")
121
+ return
122
+ end
123
+
124
+ if delete_response.attributes
125
+ current_time = Time.now.strftime("%Y-%m-%d %H:%M:%S")
126
+ $stderr.puts("[#{current_time}] Expired lock detected and deleted for #{bucket}/#{codename}. Lock was held by user: #{user}.")
127
+ end
128
+ end
129
+ end
130
+
131
+
132
+
133
+
94
134
  private :dynamodb, :validate_environment_variables!
95
135
  end
96
136
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: deb-s3-lock-fix
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.11.8.fix0.2
4
+ version: 0.11.8.fix0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Braeden Wolf & Ken Robertson