fairy 0.6.0 → 0.6.5
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.
- data/Makefile +1 -0
- data/bin/fairy +35 -5
- data/ext/extconf.rb +3 -0
- data/ext/fairy.c +180 -0
- data/ext/fairy.h +94 -0
- data/ext/fiber_mon.h +32 -0
- data/ext/fixnum-buffer.c +483 -0
- data/ext/p-group-by.c +529 -0
- data/ext/p-xgroup-by.c +467 -0
- data/ext/simple-hash.c +44 -0
- data/ext/string-buffer.c +286 -0
- data/ext/xmarshaled-queue.c +699 -0
- data/ext/xsized-queue.c +528 -0
- data/ext/xthread.h +65 -0
- data/fairy.gemspec +5 -2
- data/lib/fairy.rb +10 -1
- data/lib/fairy/client/group-by.rb +57 -2
- data/lib/fairy/client/here.rb +2 -1
- data/lib/fairy/controller.rb +25 -4
- data/lib/fairy/master.rb +17 -3
- data/lib/fairy/master/c-basic-group-by.rb +4 -2
- data/lib/fairy/master/c-cat.rb +3 -2
- data/lib/fairy/master/c-direct-product.rb +5 -3
- data/lib/fairy/master/c-filter.rb +5 -3
- data/lib/fairy/master/c-group-by.rb +13 -0
- data/lib/fairy/master/c-junction.rb +3 -2
- data/lib/fairy/master/c-seg-join.rb +3 -1
- data/lib/fairy/master/c-seg-shuffle.rb +3 -2
- data/lib/fairy/master/c-seg-split.rb +1 -1
- data/lib/fairy/master/c-seg-zip.rb +3 -1
- data/lib/fairy/master/c-sort.rb +7 -2
- data/lib/fairy/master/c-wc.rb +5 -3
- data/lib/fairy/node.rb +13 -2
- data/lib/fairy/node/p-barrier.rb +1 -1
- data/lib/fairy/node/p-basic-group-by.rb +22 -12
- data/lib/fairy/node/p-direct-product.rb +4 -2
- data/lib/fairy/node/p-filter.rb +8 -7
- data/lib/fairy/node/p-find.rb +2 -1
- data/lib/fairy/node/p-group-by.rb +17 -6
- data/lib/fairy/node/p-inject.rb +3 -2
- data/lib/fairy/node/p-output-file.rb +1 -1
- data/lib/fairy/node/p-seg-join.rb +2 -1
- data/lib/fairy/node/p-seg-zip.rb +2 -1
- data/lib/fairy/node/p-single-exportable.rb +3 -1
- data/lib/fairy/node/p-sort.rb +4 -2
- data/lib/fairy/node/p-task.rb +1 -1
- data/lib/fairy/node/p-wc.rb +5 -2
- data/lib/fairy/processor.rb +25 -18
- data/lib/fairy/share/block-source.rb +12 -2
- data/lib/fairy/share/conf.rb +35 -5
- data/lib/fairy/share/hash-simple-hash.rb +1 -1
- data/lib/fairy/share/log.rb +11 -4
- data/lib/fairy/share/pool-dictionary.rb +2 -1
- data/lib/fairy/share/port-marshaled-queue.rb +8 -1
- data/lib/fairy/share/port.rb +55 -45
- data/lib/fairy/share/reference.rb +2 -1
- data/lib/fairy/share/varray.rb +3 -1
- data/lib/fairy/share/vfile.rb +4 -2
- data/lib/fairy/version.rb +1 -1
- data/sample/sort.rb +69 -3
- data/spec/fairy8_spec.rb +1 -1
- data/test/testc.rb +380 -2
- data/tools/cap_recipe/Capfile +3 -3
- data/tools/fairy_conf_wizard.rb +375 -0
- data/tools/fairy_perf_graph.rb +15 -3
- data/tools/git-tag +1 -0
- data/tools/log-analysis.rb +59 -11
- metadata +33 -34
- data/ext/simple_hash/extconf.rb +0 -4
- data/ext/simple_hash/simple_hash.c +0 -42
data/lib/fairy/node/p-inject.rb
CHANGED
@@ -2,8 +2,9 @@
|
|
2
2
|
#
|
3
3
|
# Copyright (C) 2007-2010 Rakuten, Inc.
|
4
4
|
#
|
5
|
+
require "xthread"
|
5
6
|
|
6
|
-
require "fairy/node/p-filter"
|
7
|
+
require "fairy/node/p-io-filter"
|
7
8
|
require "fairy/node/p-single-exportable"
|
8
9
|
|
9
10
|
module Fairy
|
@@ -72,7 +73,7 @@ module Fairy
|
|
72
73
|
|
73
74
|
@value = :__FAIRY_NO_VALUE__
|
74
75
|
@value_mutex = Mutex.new
|
75
|
-
@value_cv = ConditionVariable.new
|
76
|
+
@value_cv = XThread::ConditionVariable.new
|
76
77
|
end
|
77
78
|
|
78
79
|
def input=(input)
|
@@ -2,6 +2,7 @@
|
|
2
2
|
#
|
3
3
|
# Copyright (C) 2007-2010 Rakuten, Inc.
|
4
4
|
#
|
5
|
+
require "xthread"
|
5
6
|
|
6
7
|
require "fairy/node/p-io-filter"
|
7
8
|
require "fairy/node/p-single-exportable"
|
@@ -16,7 +17,7 @@ module Fairy
|
|
16
17
|
|
17
18
|
@join_imports = nil
|
18
19
|
@join_imports_mutex = Mutex.new
|
19
|
-
@join_imports_cv = ConditionVariable.new
|
20
|
+
@join_imports_cv = XThread::ConditionVariable.new
|
20
21
|
end
|
21
22
|
|
22
23
|
def join_imports
|
data/lib/fairy/node/p-seg-zip.rb
CHANGED
@@ -2,6 +2,7 @@
|
|
2
2
|
#
|
3
3
|
# Copyright (C) 2007-2010 Rakuten, Inc.
|
4
4
|
#
|
5
|
+
require "xthread"
|
5
6
|
|
6
7
|
require "fairy/node/p-io-filter"
|
7
8
|
require "fairy/node/p-single-exportable"
|
@@ -20,7 +21,7 @@ module Fairy
|
|
20
21
|
|
21
22
|
@zip_imports = nil
|
22
23
|
@zip_imports_mutex = Mutex.new
|
23
|
-
@zip_imports_cv = ConditionVariable.new
|
24
|
+
@zip_imports_cv = XThread::ConditionVariable.new
|
24
25
|
end
|
25
26
|
|
26
27
|
def zip_imports
|
data/lib/fairy/node/p-sort.rb
CHANGED
@@ -2,9 +2,11 @@
|
|
2
2
|
#
|
3
3
|
# Copyright (C) 2007-2010 Rakuten, Inc.
|
4
4
|
#
|
5
|
+
require "xthread"
|
5
6
|
|
6
7
|
require "fairy/node/p-io-filter"
|
7
8
|
require "fairy/node/p-basic-group-by"
|
9
|
+
require "fairy/node/p-single-exportable"
|
8
10
|
|
9
11
|
module Fairy
|
10
12
|
module PSort
|
@@ -25,7 +27,7 @@ module Fairy
|
|
25
27
|
block.call(idx, item) if item
|
26
28
|
end
|
27
29
|
end
|
28
|
-
@exports_queue = Queue.new
|
30
|
+
@exports_queue = XThread::Queue.new
|
29
31
|
|
30
32
|
@counter = []
|
31
33
|
|
@@ -130,7 +132,7 @@ Log::debugf(self, "%s", @pvs.inspect)
|
|
130
132
|
return
|
131
133
|
end
|
132
134
|
|
133
|
-
unless idx = @pvs.find_index{|pv| key <
|
135
|
+
unless idx = @pvs.find_index{|pv| key < pv}
|
134
136
|
idx = @pvs.size
|
135
137
|
end
|
136
138
|
|
data/lib/fairy/node/p-task.rb
CHANGED
data/lib/fairy/node/p-wc.rb
CHANGED
@@ -2,6 +2,7 @@
|
|
2
2
|
#
|
3
3
|
# Copyright (C) 2007-2010 Rakuten, Inc.
|
4
4
|
#
|
5
|
+
require "xthread"
|
5
6
|
|
6
7
|
require "fairy/node/p-io-filter"
|
7
8
|
|
@@ -25,7 +26,7 @@ module Fairy
|
|
25
26
|
@file = nil
|
26
27
|
|
27
28
|
@exports = {}
|
28
|
-
@exports_queue = Queue.new
|
29
|
+
@exports_queue = XThread::Queue.new
|
29
30
|
|
30
31
|
@counter = {}
|
31
32
|
|
@@ -145,7 +146,9 @@ Log::debug(self, "G3")
|
|
145
146
|
Log::debug(self, "G4")
|
146
147
|
for key, export in @exports
|
147
148
|
Log::debug(self, "G4.WAIT #{key}")
|
148
|
-
|
149
|
+
@terminate_mon.synchronze do
|
150
|
+
export.fib_wait_finish(@wait_cv)
|
151
|
+
end
|
149
152
|
end
|
150
153
|
Log::debug(self, "G5")
|
151
154
|
self.status = ST_EXPORT_FINISH
|
data/lib/fairy/processor.rb
CHANGED
@@ -3,7 +3,9 @@
|
|
3
3
|
# Copyright (C) 2007-2010 Rakuten, Inc.
|
4
4
|
#
|
5
5
|
|
6
|
+
require "xthread"
|
6
7
|
require "fiber-mon"
|
8
|
+
|
7
9
|
require "deep-connect"
|
8
10
|
|
9
11
|
require "fairy/version"
|
@@ -11,6 +13,7 @@ require "fairy/share/conf"
|
|
11
13
|
require "fairy/share/stdout"
|
12
14
|
|
13
15
|
|
16
|
+
|
14
17
|
#DeepConnect::Organizer.immutable_classes.push Array
|
15
18
|
|
16
19
|
# require "node/nfile"
|
@@ -47,8 +50,8 @@ module Fairy
|
|
47
50
|
ERR::Raise ERR::INTERNAL::CantDefExport, obj.to_s
|
48
51
|
end
|
49
52
|
end
|
50
|
-
|
51
53
|
EXPORTS.push [name, obj]
|
54
|
+
|
52
55
|
end
|
53
56
|
|
54
57
|
def initialize(id)
|
@@ -87,16 +90,14 @@ module Fairy
|
|
87
90
|
|
88
91
|
@deepconnect = DeepConnect.start(service)
|
89
92
|
@deepconnect.register_service("Processor", self)
|
93
|
+
# DeepConnect::Conf.DISPLAY_KEEP_ALIVE = true
|
90
94
|
|
91
95
|
@deepconnect.when_disconnected do |deepspace, opts|
|
92
96
|
when_disconnected(deepspace, opts)
|
93
97
|
end
|
94
98
|
|
95
|
-
for name, obj in EXPORTS
|
96
|
-
export(name, obj)
|
97
|
-
end
|
98
99
|
|
99
|
-
|
100
|
+
#@njob_mon.start
|
100
101
|
|
101
102
|
require "fairy/share/inspector"
|
102
103
|
@deepconnect.export("Inspector", Inspector.new(self))
|
@@ -112,6 +113,17 @@ module Fairy
|
|
112
113
|
Log::info(self, "\tfairy version: #{Version}")
|
113
114
|
Log::info(self, "\t[Powered By #{RUBY_DESCRIPTION}]")
|
114
115
|
|
116
|
+
begin
|
117
|
+
require "fairy.so"
|
118
|
+
Log::warn self, "\t Load fairy.so"
|
119
|
+
rescue LoadError
|
120
|
+
Log::warn self, "Can't load fairy.so. Can't use this feature"
|
121
|
+
end
|
122
|
+
|
123
|
+
for name, obj in EXPORTS
|
124
|
+
export(name, obj)
|
125
|
+
end
|
126
|
+
|
115
127
|
start_watch_status
|
116
128
|
|
117
129
|
|
@@ -138,8 +150,10 @@ module Fairy
|
|
138
150
|
end
|
139
151
|
|
140
152
|
$stdout = Stdout.new(controller)
|
153
|
+
|
154
|
+
sprintf("%s %s#%d", Log::host, Log::type, Log::pid)
|
141
155
|
end
|
142
|
-
DeepConnect.def_method_spec(self, "
|
156
|
+
DeepConnect.def_method_spec(self, "DVAL connect_controller(REF, DVAL)")
|
143
157
|
|
144
158
|
def terminate
|
145
159
|
# clientが終了したときの終了処理
|
@@ -290,8 +304,8 @@ module Fairy
|
|
290
304
|
@status = :ST_WAIT
|
291
305
|
@ntask_status = {}
|
292
306
|
|
293
|
-
|
294
|
-
@status_cv = @
|
307
|
+
@status_mx = @njob_mon.new_mon
|
308
|
+
@status_cv = @status_mx.new_cv
|
295
309
|
|
296
310
|
end
|
297
311
|
|
@@ -354,41 +368,35 @@ module Fairy
|
|
354
368
|
|
355
369
|
|
356
370
|
def update_status(ntask, st)
|
357
|
-
Log::debug(self, "UPDATE_STATUS: #{ntask}, #{st}")
|
358
|
-
@
|
371
|
+
Log::debug(self, "UPDATE_STATUS: #{ntask}, #{st}")
|
372
|
+
@status_mx.synchronize do
|
359
373
|
@ntask_status[ntask] = st
|
360
374
|
|
361
375
|
case st
|
362
376
|
when :ST_INIT
|
363
377
|
# do nothing
|
364
378
|
if all_ntasks_semiactivated?(:no_lock)
|
365
|
-
Log::debug(self, "UPDATE_STATUS A: #{st}")
|
366
379
|
@status = :ST_SEMIACTIVATE
|
367
380
|
end
|
368
381
|
when :ST_WAIT_IMPORT
|
369
382
|
if all_ntasks_semiactivated?(:no_lock)
|
370
|
-
Log::debug(self, "UPDATE_STATUS B: #{st}")
|
371
383
|
@status = :ST_SEMIACTIVATE
|
372
384
|
end
|
373
385
|
when :ST_ACTIVATE
|
374
|
-
Log::debug(self, "UPDATE_STATUS C: #{st}")
|
375
386
|
@status = :ST_ACTIVATE
|
376
387
|
when :ST_ALL_IMPORTED,
|
377
388
|
:ST_WAIT_EXPORT_FINISH,
|
378
389
|
:ST_EXPORT_FINISH,
|
379
390
|
:ST_OUTPUT_FINISH
|
380
391
|
if all_ntasks_semiactivated?(:no_lock)
|
381
|
-
Log::debug(self, "UPDATE_STATUS D: #{st}")
|
382
392
|
@status = :ST_SEMIACTIVATE
|
383
393
|
end
|
384
394
|
when :ST_FINISH
|
385
395
|
if all_ntasks_finished?(:no_lock)
|
386
|
-
Log::debug(self, "UPDATE_STATUS E: #{st}")
|
387
396
|
@status = :ST_WAIT
|
388
397
|
end
|
389
398
|
else
|
390
399
|
if @status == :ST_WAIT
|
391
|
-
Log::debug(self, "UPDATE_STATUS F: #{st}")
|
392
400
|
@status = :ST_ACTIVATE
|
393
401
|
end
|
394
402
|
end
|
@@ -399,9 +407,8 @@ Log::debug(self, "UPDATE_STATUS F: #{st}")
|
|
399
407
|
def start_watch_status
|
400
408
|
# 初期状態通知
|
401
409
|
notice_status(@status)
|
402
|
-
|
403
410
|
@njob_mon.entry do
|
404
|
-
@
|
411
|
+
@status_mx.synchronize do
|
405
412
|
old_status = nil
|
406
413
|
old_no_active_ntasks = 0
|
407
414
|
loop do
|
@@ -108,7 +108,9 @@ module Fairy
|
|
108
108
|
else
|
109
109
|
bt = $!.backtrace
|
110
110
|
bt = bt.select{|l| /fairy.*(share|job|backend|node|processor|controller)|deep-connect|__FORWARDABLE__|bin.*processor/ !~ l} unless CONF.DEBUG_FULL_BACKTRACE
|
111
|
-
bt.
|
111
|
+
unless bt.empty?
|
112
|
+
bt.first.sub!("bind", @block_source.caller_method)
|
113
|
+
end
|
112
114
|
bt.push *@block_source.backtrace.dc_deep_copy
|
113
115
|
$!.set_backtrace(bt)
|
114
116
|
|
@@ -125,7 +127,9 @@ module Fairy
|
|
125
127
|
end
|
126
128
|
bt = $!.backtrace
|
127
129
|
bt = bt.select{|l| /fairy.*(share|job|backend|node|processor|controller)|deep-connect|__FORWARDABLE__|bin.*processor/ !~ l} unless CONF.DEBUG_FULL_BACKTRACE
|
128
|
-
bt.
|
130
|
+
unless bt.empty?
|
131
|
+
bt.first.sub!("bind", @block_source.caller_method)
|
132
|
+
end
|
129
133
|
bt.push *@block_source.backtrace.dc_deep_copy
|
130
134
|
$!.set_backtrace(bt)
|
131
135
|
|
@@ -163,6 +167,9 @@ module Fairy
|
|
163
167
|
else
|
164
168
|
bt = $!.backtrace
|
165
169
|
bt = bt.select{|l| /fairy.*(share|job|backend|node|processor|controller)|deep-connect|__FORWARDABLE__|bin.*processor/ !~ l} unless CONF.DEBUG_FULL_BACKTRACE
|
170
|
+
unless bt.empty?
|
171
|
+
bt.first.sub!("bind", @block_source.caller_method)
|
172
|
+
end
|
166
173
|
bt.first.sub!("bind", @block_source.caller_method)
|
167
174
|
bt.push *@block_source.backtrace.dc_deep_copy
|
168
175
|
$!.set_backtrace(bt)
|
@@ -181,6 +188,9 @@ module Fairy
|
|
181
188
|
bt = $!.backtrace
|
182
189
|
bt = bt.select{|l| /fairy.*(share|job|backend|node|processor|controller)|deep-connect|__FORWARDABLE__|bin.*processor/ !~ l} unless CONF.DEBUG_FULL_BACKTRACE
|
183
190
|
bt.first.sub!("bind", @block_source.caller_method)
|
191
|
+
unless bt.empty?
|
192
|
+
bt.first.sub!("bind", @block_source.caller_method)
|
193
|
+
end
|
184
194
|
bt.push *@block_source.backtrace.dc_deep_copy
|
185
195
|
$!.set_backtrace(bt)
|
186
196
|
|
data/lib/fairy/share/conf.rb
CHANGED
@@ -111,6 +111,16 @@ module Fairy
|
|
111
111
|
def_prop :MARSHAL_QUEUE_MIN_CHUNK_NO
|
112
112
|
def_prop :SIZEDMARSHAL_QUEUE_MAX_CHUNK_NO
|
113
113
|
|
114
|
+
def_prop :XMARSHAL_QUEUE_CHUNK_SIZE
|
115
|
+
def_prop :XMARSHAL_QUEUE_MIN_CHUNK_NO
|
116
|
+
def_prop :XMARSHAL_QUEUE_BUFFERS_CACHE_LIMIT
|
117
|
+
def_prop :XMARSHAL_QUEUE_USE_STRING_BUFFER
|
118
|
+
def_prop :XMARSHAL_QUEUE_LOG_MSTORE
|
119
|
+
|
120
|
+
def_prop :XSIZED_QUEUE_CHUNK_SIZE
|
121
|
+
def_prop :XSIZED_QUEUE_QUEUES_LIMIT
|
122
|
+
def_prop :XSIZED_QUEUE_USE_STRING_BUFFER
|
123
|
+
|
114
124
|
def_prop :SORTEDQUEUE_POOL_THRESHOLD
|
115
125
|
def_prop :SORTEDQUEUE_THRESHOLD
|
116
126
|
def_prop :SORTEDQUEUE_SORTBY
|
@@ -119,6 +129,7 @@ module Fairy
|
|
119
129
|
def_prop :HERE_POOL_THRESHOLD
|
120
130
|
#def_prop :OUTPUT_LOCAL_POOL_THRESHOLD
|
121
131
|
|
132
|
+
def_prop :GROUP_BY
|
122
133
|
def_prop :GROUP_BY_NO_SEGMENT
|
123
134
|
def_prop :GROUP_BY_HASH_MODULE
|
124
135
|
def_prop :GROUP_BY_GROUPING_OPTIMIZE
|
@@ -127,6 +138,8 @@ module Fairy
|
|
127
138
|
def_prop :GROUP_BY_CMSB_THRESHOLD
|
128
139
|
def_prop :GROUP_BY_CMSB_CHUNK_SIZE
|
129
140
|
|
141
|
+
def_prop :XGROUP_BY_BUFFERING_POLICY
|
142
|
+
|
130
143
|
def_prop :BARRIER_MEMORY_BUFFERING_POLICY
|
131
144
|
|
132
145
|
def_prop :SORT_BUFFERING_POLICY
|
@@ -288,19 +301,32 @@ module Fairy
|
|
288
301
|
|
289
302
|
DEFAULT_CONF.POSTMAPPING_POLICY = nil
|
290
303
|
|
291
|
-
DEFAULT_CONF.PREQUEUING_POLICY = {:queuing_class => :
|
292
|
-
DEFAULT_CONF.POSTQUEUING_POLICY = {:queuing_class => :
|
304
|
+
DEFAULT_CONF.PREQUEUING_POLICY = {:queuing_class => :XSizedQueue}
|
305
|
+
DEFAULT_CONF.POSTQUEUING_POLICY = {:queuing_class => :XMarshaledQueue}
|
293
306
|
|
294
307
|
DEFAULT_CONF.POSTQUEUE_MAX_TRANSFER_SIZE = 100000
|
295
|
-
DEFAULT_CONF.POOLQUEUE_POOL_THRESHOLD =
|
308
|
+
DEFAULT_CONF.POOLQUEUE_POOL_THRESHOLD = 100000
|
296
309
|
DEFAULT_CONF.ONMEMORY_SIZEDQUEUE_SIZE = 10000
|
297
310
|
DEFAULT_CONF.FILEBUFFEREDQUEUE_THRESHOLD = 10000/2
|
298
311
|
|
299
312
|
DEFAULT_CONF.MARSHAL_QUEUE_CHUNK_SIZE = DEFAULT_CONF.POOLQUEUE_POOL_THRESHOLD
|
300
313
|
DEFAULT_CONF.MARSHAL_QUEUE_MIN_CHUNK_NO = DEFAULT_CONF.POOLQUEUE_POOL_THRESHOLD
|
301
314
|
DEFAULT_CONF.SIZEDMARSHAL_QUEUE_MAX_CHUNK_NO = 10
|
315
|
+
|
316
|
+
DEFAULT_CONF.XMARSHAL_QUEUE_CHUNK_SIZE = DEFAULT_CONF.MARSHAL_QUEUE_CHUNK_SIZE
|
317
|
+
DEFAULT_CONF.XMARSHAL_QUEUE_MIN_CHUNK_NO = DEFAULT_CONF.MARSHAL_QUEUE_MIN_CHUNK_NO
|
318
|
+
DEFAULT_CONF.XMARSHAL_QUEUE_BUFFERS_CACHE_LIMIT = 1000
|
319
|
+
DEFAULT_CONF.XMARSHAL_QUEUE_USE_STRING_BUFFER = true
|
320
|
+
DEFAULT_CONF.XMARSHAL_QUEUE_LOG_MSTORE = false
|
321
|
+
|
322
|
+
DEFAULT_CONF.XSIZED_QUEUE_CHUNK_SIZE = DEFAULT_CONF.XMARSHAL_QUEUE_CHUNK_SIZE
|
323
|
+
DEFAULT_CONF.XSIZED_QUEUE_QUEUES_LIMIT =
|
324
|
+
DEFAULT_CONF.XMARSHAL_QUEUE_BUFFERS_CACHE_LIMIT
|
325
|
+
DEFAULT_CONF.XSIZED_QUEUE_USE_STRING_BUFFER =
|
326
|
+
DEFAULT_CONF.XMARSHAL_QUEUE_USE_STRING_BUFFER
|
302
327
|
|
303
|
-
DEFAULT_CONF.SORTEDQUEUE_POOL_THRESHOLD =
|
328
|
+
DEFAULT_CONF.SORTEDQUEUE_POOL_THRESHOLD =
|
329
|
+
DEFAULT_CONF.POOLQUEUE_POOL_THRESHOLD
|
304
330
|
DEFAULT_CONF.SORTEDQUEUE_THRESHOLD = 10000/2
|
305
331
|
DEFAULT_CONF.SORTEDQUEUE_SORTBY = %{|v| v}
|
306
332
|
|
@@ -308,6 +334,8 @@ module Fairy
|
|
308
334
|
DEFAULT_CONF.HERE_POOL_THRESHOLD = 32000
|
309
335
|
#DEFAULT_CONF.OUTPUT_LOCAL_POOL_THRESHOLD = 32000
|
310
336
|
|
337
|
+
DEFAULT_CONF.GROUP_BY = :XGroupBy
|
338
|
+
|
311
339
|
DEFAULT_CONF.GROUP_BY_NO_SEGMENT = 4
|
312
340
|
DEFAULT_CONF.GROUP_BY_HASH_MODULE = "fairy/share/hash-md5"
|
313
341
|
DEFAULT_CONF.GROUP_BY_GROUPING_OPTIMIZE = false
|
@@ -316,9 +344,11 @@ module Fairy
|
|
316
344
|
DEFAULT_CONF.GROUP_BY_CMSB_THRESHOLD = 400_000
|
317
345
|
DEFAULT_CONF.GROUP_BY_CMSB_CHUNK_SIZE = 1000
|
318
346
|
|
347
|
+
DEFAULT_CONF.XGROUP_BY_BUFFERING_POLICY = {:buffering_class => :XDirectMergeSortBuffer}
|
348
|
+
|
319
349
|
DEFAULT_CONF.BARRIER_MEMORY_BUFFERING_POLICY = {:queuing_class => :PoolQueue}
|
320
350
|
|
321
|
-
DEFAULT_CONF.SORT_BUFFERING_POLICY = {:buffering_class => "PGroupBy::
|
351
|
+
DEFAULT_CONF.SORT_BUFFERING_POLICY = {:buffering_class => "PGroupBy::XDirectMergeSortBuffer"}
|
322
352
|
DEFAULT_CONF.SORT_SAMPLING_MIN = 100
|
323
353
|
DEFAULT_CONF.SORT_SAMPLING_MAX = 10000
|
324
354
|
DEFAULT_CONF.SORT_SAMPLING_RATIO_1_TO = 100
|
data/lib/fairy/share/log.rb
CHANGED
@@ -4,6 +4,7 @@
|
|
4
4
|
#
|
5
5
|
|
6
6
|
require "thread"
|
7
|
+
require "xthread"
|
7
8
|
require "stringio"
|
8
9
|
|
9
10
|
require "forwardable"
|
@@ -30,7 +31,7 @@ module Fairy
|
|
30
31
|
|
31
32
|
@buffer = []
|
32
33
|
@buffer_mutex = Mutex.new
|
33
|
-
@buffer_cv = ConditionVariable.new
|
34
|
+
@buffer_cv = XThread::ConditionVariable.new
|
34
35
|
|
35
36
|
set_local_output_dev
|
36
37
|
|
@@ -163,9 +164,15 @@ module Fairy
|
|
163
164
|
sender = "UNDEF"
|
164
165
|
end
|
165
166
|
log(sender) do |sio|
|
166
|
-
|
167
|
-
|
168
|
-
|
167
|
+
if exception.kind_of?(Exception)
|
168
|
+
sio.puts "#{exception.message}: #{exception.class}"
|
169
|
+
for l in exception.backtrace
|
170
|
+
sio.puts l
|
171
|
+
end
|
172
|
+
else
|
173
|
+
sio.puts "Unknown exception rised!!(Exp=#{exception.inspect})"
|
174
|
+
sio.puts "Backtorace: "
|
175
|
+
log_backtrace(sender)
|
169
176
|
end
|
170
177
|
end
|
171
178
|
end
|