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

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.
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