jflow 0.3.5 → 0.3.6

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: 8d5f7566c4c2619932820abfbe9b8ca2beedfbb5
4
- data.tar.gz: 4cf09a731fbcdd97b3c94606f4eb5e32ca8d0757
3
+ metadata.gz: ee227c0d6cfc06d17a93805bd3c108bef4efe51b
4
+ data.tar.gz: e5e0046572c7b25d71bab9e654bc926433739265
5
5
  SHA512:
6
- metadata.gz: d9b75ea31dcf96348296f069f96d52befc41a3517094a541b254d079b57d76b82ffe22ac3a0704183668acd3ae4da0be1199e6139491da23334c0157f4eb5a5b
7
- data.tar.gz: ed334c3e1544fdcd088fadf8d236a076d18d33b6889944bbaa24c9b0f86814cb8fe89ae4f8eecc2da60f430f2aa3c3a2ff8ff7bd627548c417e57742c5351df3
6
+ metadata.gz: 4e5a5a9df63c946880805d2c67815638d9806956e3df6a6c5640a2d1f40d79a0cc6021b9dad4a46f366824b81cfb612046b04d9e2b126b21561ea2cf67468804
7
+ data.tar.gz: 365419b044cc4844505b516d442af18ee4565d34b42f79edb6b7e2c2582eca8ae1c8e735a51c43e9a23fc10f127981169bdad5d9624075a55b36c7c4ae078f60
@@ -12,6 +12,7 @@ require "jflow/activity/task.rb"
12
12
  require "jflow/activity/map.rb"
13
13
  require "jflow/activity/worker.rb"
14
14
  require "jflow/worker_thread.rb"
15
+ require "jflow/stats.rb"
15
16
  require "jflow/cli.rb"
16
17
 
17
18
  module JFlow
@@ -8,7 +8,7 @@ module JFlow
8
8
  "activities_path" => "array"
9
9
  }
10
10
 
11
- attr_reader :number_of_workers, :domain, :tasklist, :worker_threads, :activities_path
11
+ attr_reader :number_of_workers, :domain, :tasklist, :worker_threads, :activities_path, :enable_stats
12
12
 
13
13
  def initialize(options)
14
14
  validate_options(options)
@@ -16,6 +16,7 @@ module JFlow
16
16
  @domain = options["domain"]
17
17
  @tasklist = options["tasklist"]
18
18
  @activities_path = options["activities_path"]
19
+ @enable_stats = options["enable_stats"] || true
19
20
  @worker_threads = []
20
21
  setup
21
22
  end
@@ -24,6 +25,7 @@ module JFlow
24
25
  number_of_workers.times do
25
26
  worker_threads << worker_thread
26
27
  end
28
+ worker_threads << stats_thread if enable_stats
27
29
  worker_threads.each(&:join)
28
30
  end
29
31
 
@@ -58,10 +60,23 @@ module JFlow
58
60
  JFlow.configure do |c|
59
61
  c.load_paths = activities_path
60
62
  c.swf_client = Aws::SWF::Client.new
63
+ c.cloudwatch_client = Aws::CloudWatch::Client.new
61
64
  end
62
65
  JFlow.load_activities
63
66
  end
64
67
 
68
+ def stats_thread
69
+ JFlow::WorkerThread.new do
70
+ Thread.current.set_state(:polling)
71
+ stats = JFlow::Stats.new(@domain, @tasklist)
72
+ loop do
73
+ break if Thread.current.marked_for_shutdown?
74
+ stats.tick
75
+ sleep 30
76
+ end
77
+ end
78
+ end
79
+
65
80
  def kill_thread(thread)
66
81
  Thread.new do
67
82
  sleep 60
@@ -1,13 +1,14 @@
1
1
  module JFlow
2
2
  class Configuration
3
3
 
4
- attr_accessor :swf_client, :load_paths, :logger, :activity_map
4
+ attr_accessor :swf_client, :load_paths, :logger, :activity_map, :cloudwatch_client
5
5
 
6
6
  def initialize
7
- @swf_client = nil
8
- @load_paths = []
9
- @logger = Logger.new(STDOUT)
10
- @activity_map = JFlow::Activity::Map.new
7
+ @swf_client = nil
8
+ @cloudwatch_client = nil
9
+ @load_paths = []
10
+ @logger = Logger.new(STDOUT)
11
+ @activity_map = JFlow::Activity::Map.new
11
12
  end
12
13
  end
13
14
  end
@@ -0,0 +1,46 @@
1
+ module JFlow
2
+ class Stats
3
+
4
+ attr_reader :domain_name, :tasklist
5
+
6
+ def initialize(domain_name, tasklist)
7
+ @domain_name = domain_name
8
+ @tasklist = tasklist
9
+ end
10
+
11
+ def tick
12
+ value = backlog_count
13
+ JFlow.configuration.cloudwatch_client.put_metric_data({
14
+ namespace: "SWF/Custom",
15
+ metric_data: [
16
+ {
17
+ metric_name: "TasklistBacklog",
18
+ dimensions: [
19
+ {
20
+ name: "Domain",
21
+ value: domain_name,
22
+ },{
23
+ name: "Tasklist",
24
+ value: tasklist,
25
+ }
26
+ ],
27
+ timestamp: Time.now,
28
+ value: value,
29
+ unit: "Count"
30
+ },
31
+ ],
32
+ })
33
+ JFlow.configuration.logger.debug "Sending tick stats with value: #{value}"
34
+ end
35
+
36
+ def backlog_count
37
+ JFlow.configuration.swf_client.count_pending_activity_tasks({
38
+ domain: domain_name,
39
+ task_list: {
40
+ name: tasklist,
41
+ },
42
+ }).count
43
+ end
44
+
45
+ end
46
+ end
@@ -1,3 +1,3 @@
1
1
  module JFlow
2
- VERSION = "0.3.5"
2
+ VERSION = "0.3.6"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jflow
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.5
4
+ version: 0.3.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Christophe Verbinnen
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-04-07 00:00:00.000000000 Z
11
+ date: 2016-04-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: aws-sdk
@@ -123,6 +123,7 @@ files:
123
123
  - lib/jflow/cli.rb
124
124
  - lib/jflow/configuration.rb
125
125
  - lib/jflow/domain.rb
126
+ - lib/jflow/stats.rb
126
127
  - lib/jflow/version.rb
127
128
  - lib/jflow/worker_thread.rb
128
129
  homepage: https://github.com/djpate/jflow