bricolage-streamingload 0.13.0 → 0.14.0
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.
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
|