traject 0.11.0 → 0.12.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -74,30 +74,47 @@ module Traject
74
74
  end
75
75
 
76
76
  # Pass it a block, MAYBE gets executed in the bg in a thread pool. Maybe
77
- # gets executed in the calling thread.
77
+ # gets executed in the calling thread.
78
78
  #
79
79
  # There are actually two 'maybes':
80
- #
80
+ #
81
81
  # * If Traject::ThreadPool was configured with null thread pool, then ALL
82
- # work will be executed in calling thread.
82
+ # work will be executed in calling thread.
83
83
  #
84
84
  # * If there is a thread pool, but it's work queue is full, then a job
85
85
  # will be executed in calling thread (because we configured our java
86
86
  # thread pool with a limited sized queue, and CallerRunsPolicy rejection strategy)
87
- def maybe_in_thread_pool
87
+ #
88
+ # You can pass arbitrary arguments to the method, that will then be passed
89
+ # to your block -- similar to how ruby Thread.new works. This is convenient
90
+ # for creating variables unique to the block that won't be shared outside
91
+ # the thread:
92
+ #
93
+ # thread_pool.maybe_in_thread_pool(x, y) do |x1, y1|
94
+ # 100.times do
95
+ # something_with(x1)
96
+ # end
97
+ # end
98
+ # x = "someting else"
99
+ # # If we hadn't passed args with block, and had just
100
+ # # used x in the block, it'd be the SAME x as this one,
101
+ # # and would be pointing to a different string now!
102
+ #
103
+ # Note, that just makes block-local variables, it doesn't
104
+ # help you with whether a data structure itself is thread safe.
105
+ def maybe_in_thread_pool(*args)
88
106
  start_t = Time.now
89
107
 
90
108
  if @thread_pool
91
-
92
109
  @thread_pool.execute do
93
110
  begin
94
- yield
111
+ yield(*args)
95
112
  rescue Exception => e
96
113
  collect_exception(e)
97
114
  end
98
115
  end
99
116
  else
100
- yield
117
+ yield(*args)
101
118
  end
102
119
 
103
120
  end
@@ -1,3 +1,3 @@
1
1
  module Traject
2
- VERSION = "0.11.0"
2
+ VERSION = "0.12.0"
3
3
  end
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: traject
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.11.0
5
+ version: 0.12.0
6
6
  platform: ruby
7
7
  authors:
8
8
  - Jonathan Rochkind