daemon_runner 0.4.1 → 0.4.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
  SHA1:
3
- metadata.gz: 9a40696f28e6af1d205de21719f33bcd617b3a6a
4
- data.tar.gz: 72d29ef5129936ee5a64c0f159b32db2966f5a32
3
+ metadata.gz: 8f9b54559e80630efbf1a6a5b6f459888cd296f9
4
+ data.tar.gz: a7f763bdc385cc88ee530550476d9c4baf1a3cd3
5
5
  SHA512:
6
- metadata.gz: 05d11eb3122cd995603c1e21b0d66af72a467dfac4cf1a701e32260744eb09d6dc808a966a17547024d08d685ef5306a9391fc937bd906ffed6465ad1c4f0272
7
- data.tar.gz: 0f2202f3091650a471edab3567a51fa7b1f76b9dd2f2147f701c38fc41f62625910e4be0ce7278d8350839e0d5ca29d2e82e9ee3958da188b426d33067395eff
6
+ metadata.gz: ed46495953d0fdb759470475c3f25b97428be13a3c25f391a3b3271d18ffd808e69ff2b79dfd949be36b6ca649c436f4413c1dc2dd78ca3a9244b126a861ca85
7
+ data.tar.gz: 332319f3d280c60481831f5a1d4e8abe0059517bb4bb79bd19d6cb508521f6b9f43b28c1b5300ebc7843432a0016f83d25f1366f8cfc4cbb72a4624b199c1d5f
data/README.md CHANGED
@@ -168,7 +168,7 @@ Locking can be done either via an exclusive lock or a semaphore lock. The major
168
168
  **TBD**
169
169
 
170
170
  #### Semaphore Lock
171
- For an example of how to implement semaphore locking take a look at the [example](/examples/example_semaphore.rb)
171
+ For an example of how to implement semaphore locking take a look at the [manual locking example](/examples/example_semaphore.rb) and the [slightly more automatic version](/examples/example_semaphore_release.rb).
172
172
 
173
173
 
174
174
  ## Development
@@ -5,7 +5,27 @@ require 'dev/consul'
5
5
 
6
6
  @service = 'myservice'
7
7
  @lock_count = 3
8
- @locked = false
8
+ @lock_time = 10
9
9
 
10
- @semaphore = DaemonRunner::Semaphore.start(@service)
11
- DaemonRunner::Semaphore.lock(@lock_count)
10
+ ::Dev::Consul.run
11
+ ::Dev::Consul.wait
12
+
13
+ # Get a new semaphore
14
+ @semaphore = DaemonRunner::Semaphore.lock(@service, @lock_count)
15
+
16
+ # Spawn a thread to handle renewing the lock
17
+ @renew_thread = @semaphore.renew
18
+
19
+ # Do whatever kind of work you want
20
+ @lock_time.downto(0).each do |i|
21
+ puts "Releasing lock in #{i} seconds"
22
+ sleep 1
23
+ end
24
+
25
+ # Kill the thread when you're done
26
+ @renew_thread.kill
27
+
28
+ # Explicitly release the semaphore when you're done
29
+ @semaphore.release
30
+
31
+ ::Dev::Consul.stop
@@ -5,12 +5,16 @@ require 'dev/consul'
5
5
 
6
6
  @service = 'myreleaseservice'
7
7
  @lock_count = 3
8
- @locked = false
9
8
  @lock_time = 10
10
9
 
10
+ ::Dev::Consul.run
11
+ ::Dev::Consul.wait
12
+
11
13
  DaemonRunner::Semaphore.lock(@service, @lock_count) do
12
14
  @lock_time.downto(0).each do |i|
13
15
  puts "Releasing lock in #{i} seconds"
14
16
  sleep 1
15
17
  end
16
18
  end
19
+
20
+ ::Dev::Consul.stop
@@ -19,17 +19,19 @@ module DaemonRunner
19
19
  semaphore = Semaphore.new(options)
20
20
  semaphore.lock
21
21
  if block_given?
22
- lock_thr = semaphore.renew
23
- yield
22
+ begin
23
+ lock_thr = semaphore.renew
24
+ yield
25
+ ensure
26
+ lock_thr.kill unless lock_thr.nil?
27
+ semaphore.release
28
+ end
24
29
  end
25
30
  semaphore
26
31
  rescue Exception => e
27
32
  logger.error e
28
33
  logger.debug e.backtrace.join("\n")
29
34
  raise
30
- ensure
31
- lock_thr.kill
32
- semaphore.release
33
35
  end
34
36
  end
35
37
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: daemon_runner
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.1
4
+ version: 0.4.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrew Thompson
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-11-15 00:00:00.000000000 Z
11
+ date: 2016-11-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: logging