bricolage-streamingload 0.13.0 → 0.14.0
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:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 523da5342b4a48ba2c46e2a2565bf1561570e7a7
|
4
|
+
data.tar.gz: '02229582ac7ee8ca27a86eaef69a4c4824735e8e'
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 17e440e8400bf237cc4d19bd01c6f16641e6e49a595a757e2e2925de9ae5645796f29acda03904230e0bf591311b44267f2cd77ecec03245c8a553bba94e4b93
|
7
|
+
data.tar.gz: 0ffbc7699e531268e471d769024b64281111fa44c5fb4d3e94245202e0ee6504996db814a29eb497d339f2c20f38af63ec37de5731bc23e272191d04dc296a4c
|
@@ -7,6 +7,7 @@ require 'bricolage/streamingload/dispatchermessage'
|
|
7
7
|
require 'bricolage/streamingload/loadermessage'
|
8
8
|
require 'bricolage/streamingload/chunkrouter'
|
9
9
|
require 'bricolage/streamingload/chunkbuffer'
|
10
|
+
require 'bricolage/streamingload/loadtasklogger'
|
10
11
|
require 'bricolage/streamingload/alertinglogger'
|
11
12
|
require 'aws-sdk'
|
12
13
|
require 'yaml'
|
@@ -48,11 +49,16 @@ module Bricolage
|
|
48
49
|
|
49
50
|
chunk_router = ChunkRouter.for_config(config.fetch('url_patterns'))
|
50
51
|
|
52
|
+
task_logger = LoadTaskLogger.new(
|
53
|
+
ctx.get_data_source('s3', config.fetch('ctl-s3-ds', 's3_ctl'))
|
54
|
+
)
|
55
|
+
|
51
56
|
dispatcher = Dispatcher.new(
|
52
57
|
event_queue: event_queue,
|
53
58
|
task_queue: task_queue,
|
54
59
|
chunk_router: chunk_router,
|
55
60
|
chunk_buffer: chunk_buffer,
|
61
|
+
task_logger: task_logger,
|
56
62
|
dispatch_interval: config.fetch('dispatch-interval', 60),
|
57
63
|
logger: logger
|
58
64
|
)
|
@@ -60,13 +66,13 @@ module Bricolage
|
|
60
66
|
Process.daemon(true) if opts.daemon?
|
61
67
|
create_pid_file opts.pid_file_path if opts.pid_file_path
|
62
68
|
Dir.chdir '/'
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
69
|
+
begin
|
70
|
+
dispatcher.event_loop
|
71
|
+
rescue Exception => e
|
72
|
+
logger.exception e
|
73
|
+
logger.error "dispatcher abort: pid=#{$$}"
|
74
|
+
raise
|
75
|
+
end
|
70
76
|
end
|
71
77
|
|
72
78
|
def Dispatcher.new_logger(path, config)
|
@@ -85,11 +91,12 @@ module Bricolage
|
|
85
91
|
# ignore
|
86
92
|
end
|
87
93
|
|
88
|
-
def initialize(event_queue:, task_queue:, chunk_router:, chunk_buffer:, dispatch_interval:, logger:)
|
94
|
+
def initialize(event_queue:, task_queue:, chunk_router:, chunk_buffer:, task_logger:, dispatch_interval:, logger:)
|
89
95
|
@event_queue = event_queue
|
90
96
|
@task_queue = task_queue
|
91
97
|
@chunk_router = chunk_router
|
92
98
|
@chunk_buffer = chunk_buffer
|
99
|
+
@task_logger = task_logger
|
93
100
|
@dispatch_interval = dispatch_interval
|
94
101
|
@dispatch_message_id = nil
|
95
102
|
@logger = logger
|
@@ -198,6 +205,7 @@ module Bricolage
|
|
198
205
|
tasks.each do |task|
|
199
206
|
msg = StreamingLoadV3LoaderMessage.for_load_task(task)
|
200
207
|
@task_queue.put msg
|
208
|
+
@task_logger.log task
|
201
209
|
end
|
202
210
|
end
|
203
211
|
|
@@ -0,0 +1,37 @@
|
|
1
|
+
require 'stringio'
|
2
|
+
|
3
|
+
module Bricolage
|
4
|
+
|
5
|
+
module StreamingLoad
|
6
|
+
|
7
|
+
class LoadTaskLogger
|
8
|
+
|
9
|
+
def initialize(s3ds)
|
10
|
+
@s3ds = s3ds
|
11
|
+
end
|
12
|
+
|
13
|
+
def log(task)
|
14
|
+
csv = content(task)
|
15
|
+
key = key(task)
|
16
|
+
@logger.info "s3: put: #{@s3ds.url(key)}"
|
17
|
+
@s3ds.object(key).put(body: csv)
|
18
|
+
end
|
19
|
+
|
20
|
+
def key(task)
|
21
|
+
now = Time.now
|
22
|
+
"task/#{now.strftime('%Y/%m/%d')}/task-#{task.id}.csv"
|
23
|
+
end
|
24
|
+
|
25
|
+
def content(task)
|
26
|
+
buf = StringIO.new
|
27
|
+
tasks.chunks.each do |chunk|
|
28
|
+
buf.puts %Q("#{task.id}","#{chunk.id}","#{chunk.url}")
|
29
|
+
end
|
30
|
+
buf.string
|
31
|
+
end
|
32
|
+
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
36
|
+
|
37
|
+
end
|
@@ -50,11 +50,14 @@ module Bricolage
|
|
50
50
|
}
|
51
51
|
])
|
52
52
|
|
53
|
+
task_logger = DummyLoadTaskLogger.new
|
54
|
+
|
53
55
|
dispatcher = Dispatcher.new(
|
54
56
|
event_queue: event_queue,
|
55
57
|
task_queue: task_queue,
|
56
58
|
chunk_buffer: chunk_buffer,
|
57
59
|
chunk_router: chunk_router,
|
60
|
+
task_logger: task_logger,
|
58
61
|
dispatch_interval: 600,
|
59
62
|
logger: ctx.logger
|
60
63
|
)
|
@@ -93,6 +96,10 @@ module Bricolage
|
|
93
96
|
assert_equal 'testschema', task.schema_name
|
94
97
|
assert_equal 'desttable', task.table_name
|
95
98
|
assert_equal 10, task.object_urls.size
|
99
|
+
|
100
|
+
# Task Logger
|
101
|
+
assert_not_nil task_logger.last_task
|
102
|
+
assert_equal task_id, task_logger.last_task.id.to_i
|
96
103
|
end
|
97
104
|
|
98
105
|
def unassigned_objects(ctl_ds)
|
@@ -142,11 +149,14 @@ module Bricolage
|
|
142
149
|
}
|
143
150
|
])
|
144
151
|
|
152
|
+
task_logger = DummyLoadTaskLogger.new
|
153
|
+
|
145
154
|
dispatcher = Dispatcher.new(
|
146
155
|
event_queue: event_queue,
|
147
156
|
task_queue: task_queue,
|
148
157
|
chunk_buffer: chunk_buffer,
|
149
158
|
chunk_router: chunk_router,
|
159
|
+
task_logger: task_logger,
|
150
160
|
dispatch_interval: 600,
|
151
161
|
logger: ctx.logger
|
152
162
|
)
|
@@ -186,6 +196,10 @@ module Bricolage
|
|
186
196
|
assert_equal 'testschema', task.schema_name
|
187
197
|
assert_equal 'bbb', task.table_name
|
188
198
|
assert_equal 2, task.object_urls.size
|
199
|
+
|
200
|
+
# Task Logger
|
201
|
+
assert_not_nil task_logger.last_task
|
202
|
+
assert_equal task_id, task_logger.last_task.id.to_i
|
189
203
|
end
|
190
204
|
|
191
205
|
def unassigned_table_objects(ctl_ds, table_name)
|
@@ -205,5 +219,23 @@ module Bricolage
|
|
205
219
|
|
206
220
|
end
|
207
221
|
|
222
|
+
|
223
|
+
class DummyLoadTaskLogger
|
224
|
+
|
225
|
+
def initialize
|
226
|
+
@task = nil
|
227
|
+
end
|
228
|
+
|
229
|
+
def log(task)
|
230
|
+
@task = task
|
231
|
+
nil
|
232
|
+
end
|
233
|
+
|
234
|
+
def last_task
|
235
|
+
@task
|
236
|
+
end
|
237
|
+
|
238
|
+
end
|
239
|
+
|
208
240
|
end
|
209
241
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bricolage-streamingload
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.14.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Minero Aoki
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2018-01-
|
12
|
+
date: 2018-01-09 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bricolage
|
@@ -130,6 +130,7 @@ files:
|
|
130
130
|
- lib/bricolage/streamingload/jobparams.rb
|
131
131
|
- lib/bricolage/streamingload/loadermessage.rb
|
132
132
|
- lib/bricolage/streamingload/loadtask.rb
|
133
|
+
- lib/bricolage/streamingload/loadtasklogger.rb
|
133
134
|
- lib/bricolage/streamingload/manifest.rb
|
134
135
|
- lib/bricolage/streamingload/taskhandler.rb
|
135
136
|
- lib/bricolage/streamingload/version.rb
|