embulk 0.7.9-java → 0.7.10-java
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +2 -0
- data/build.gradle +1 -1
- data/embulk-core/src/main/java/org/embulk/EmbulkEmbed.java +6 -0
- data/embulk-core/src/main/java/org/embulk/exec/BulkLoader.java +33 -25
- data/embulk-core/src/main/java/org/embulk/exec/GuessExecutor.java +9 -14
- data/embulk-core/src/main/java/org/embulk/exec/PartialExecutionException.java +9 -1
- data/embulk-core/src/main/java/org/embulk/exec/SamplingParserPlugin.java +20 -14
- data/embulk-core/src/main/java/org/embulk/exec/TransactionStage.java +27 -0
- data/embulk-docs/src/release.rst +1 -0
- data/embulk-docs/src/release/release-0.7.10.rst +13 -0
- data/embulk-standards/src/main/java/org/embulk/standards/GzipFileDecoderPlugin.java +1 -1
- data/lib/embulk/runner.rb +10 -6
- data/lib/embulk/version.rb +1 -1
- metadata +32 -30
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 07537880bdd71e7cafe40764b8524235b53818a3
|
4
|
+
data.tar.gz: d89580dbc24f3c8a585c3973b322cc02612ef102
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0b47d12a34fdeca9d9e4ee2d61e5915c91559a81033b6af91faaa67a3bd7b91f48fc45554331d84dc6f482a6ae4fbb7b5b13f3292dec5851676449b0897b4102
|
7
|
+
data.tar.gz: 8cc289fb8104157c49e1c3f15fdc03a8bf8ca68a5576df8b98a5a1c993b95b16dbb42dbe34b2debecdc3d47fb7cde5162ddf36464bfb7a171f960a609145aea8
|
data/README.md
CHANGED
data/build.gradle
CHANGED
@@ -21,6 +21,7 @@ import org.embulk.exec.PreviewResult;
|
|
21
21
|
import org.embulk.exec.ExecutionResult;
|
22
22
|
import org.embulk.exec.PartialExecutionException;
|
23
23
|
import org.embulk.exec.ResumeState;
|
24
|
+
import org.embulk.exec.TransactionStage;
|
24
25
|
import org.embulk.spi.BufferAllocator;
|
25
26
|
import org.embulk.spi.ExecSession;
|
26
27
|
import org.embulk.guice.Bootstrap;
|
@@ -273,6 +274,11 @@ public class EmbulkEmbed
|
|
273
274
|
checkState(partialExecutionException != null);
|
274
275
|
return partialExecutionException.getResumeState();
|
275
276
|
}
|
277
|
+
|
278
|
+
public TransactionStage getTransactionStage()
|
279
|
+
{
|
280
|
+
return partialExecutionException.getTransactionStage();
|
281
|
+
}
|
276
282
|
}
|
277
283
|
|
278
284
|
public class ResumeStateAction
|
@@ -74,6 +74,7 @@ public class BulkLoader
|
|
74
74
|
private volatile List<TaskSource> filterTaskSources;
|
75
75
|
private volatile List<Schema> schemas;
|
76
76
|
private volatile Schema executorSchema;
|
77
|
+
private volatile TransactionStage transactionStage;
|
77
78
|
|
78
79
|
private volatile ConfigDiff inputConfigDiff;
|
79
80
|
private volatile ConfigDiff outputConfigDiff;
|
@@ -102,6 +103,11 @@ public class BulkLoader
|
|
102
103
|
this.executorSchema = executorSchema;
|
103
104
|
}
|
104
105
|
|
106
|
+
public void setTransactionStage(TransactionStage transactionStage)
|
107
|
+
{
|
108
|
+
this.transactionStage = transactionStage;
|
109
|
+
}
|
110
|
+
|
105
111
|
public void setInputTaskSource(TaskSource inputTaskSource)
|
106
112
|
{
|
107
113
|
this.inputTaskSource = inputTaskSource;
|
@@ -220,20 +226,6 @@ public class BulkLoader
|
|
220
226
|
return inputConfigDiff != null && outputConfigDiff != null;
|
221
227
|
}
|
222
228
|
|
223
|
-
public boolean isAnyStarted()
|
224
|
-
{
|
225
|
-
if (inputTaskStates == null) {
|
226
|
-
// not initialized
|
227
|
-
return false;
|
228
|
-
}
|
229
|
-
for (TaskState inputTaskState : inputTaskStates) {
|
230
|
-
if (inputTaskState.isStarted()) {
|
231
|
-
return true;
|
232
|
-
}
|
233
|
-
}
|
234
|
-
return false;
|
235
|
-
}
|
236
|
-
|
237
229
|
public void setOutputConfigDiff(ConfigDiff outputConfigDiff)
|
238
230
|
{
|
239
231
|
if (outputConfigDiff == null) {
|
@@ -356,16 +348,19 @@ public class BulkLoader
|
|
356
348
|
|
357
349
|
public ResumeState buildResumeState(ExecSession exec)
|
358
350
|
{
|
351
|
+
Schema inputSchema = (schemas == null) ? null : schemas.get(0);
|
352
|
+
List<Optional<TaskReport>> inputTaskReports = (inputTaskStates == null) ? null : getInputTaskReports();
|
353
|
+
List<Optional<TaskReport>> outputTaskReports = (outputTaskStates == null) ? null : getOutputTaskReports();
|
359
354
|
return new ResumeState(
|
360
355
|
exec.getSessionExecConfig(),
|
361
356
|
inputTaskSource, outputTaskSource,
|
362
|
-
|
363
|
-
|
357
|
+
inputSchema, executorSchema,
|
358
|
+
inputTaskReports, outputTaskReports);
|
364
359
|
}
|
365
360
|
|
366
361
|
public PartialExecutionException buildPartialExecuteException(Throwable cause, ExecSession exec)
|
367
362
|
{
|
368
|
-
return new PartialExecutionException(cause, buildResumeState(exec));
|
363
|
+
return new PartialExecutionException(cause, buildResumeState(exec), transactionStage);
|
369
364
|
}
|
370
365
|
}
|
371
366
|
|
@@ -513,26 +508,30 @@ public class BulkLoader
|
|
513
508
|
final ProcessPluginSet plugins = new ProcessPluginSet(task);
|
514
509
|
|
515
510
|
final LoaderState state = new LoaderState(Exec.getLogger(BulkLoader.class), plugins);
|
511
|
+
state.setTransactionStage(TransactionStage.INPUT_BEGIN);
|
516
512
|
try {
|
517
513
|
ConfigDiff inputConfigDiff = plugins.getInputPlugin().transaction(task.getInputConfig(), new InputPlugin.Control() {
|
518
514
|
public List<TaskReport> run(final TaskSource inputTask, final Schema inputSchema, final int inputTaskCount)
|
519
515
|
{
|
520
516
|
state.setInputTaskSource(inputTask);
|
517
|
+
state.setTransactionStage(TransactionStage.FILTER_BEGIN);
|
521
518
|
Filters.transaction(plugins.getFilterPlugins(), task.getFilterConfigs(), inputSchema, new Filters.Control() {
|
522
519
|
public void run(final List<TaskSource> filterTasks, final List<Schema> schemas)
|
523
520
|
{
|
524
521
|
state.setSchemas(schemas);
|
525
522
|
state.setFilterTaskSources(filterTasks);
|
523
|
+
state.setTransactionStage(TransactionStage.EXECUTOR_BEGIN);
|
526
524
|
exec.transaction(task.getExecConfig(), last(schemas), inputTaskCount, new ExecutorPlugin.Control() {
|
527
525
|
public void transaction(final Schema executorSchema, final int outputTaskCount, final ExecutorPlugin.Executor executor)
|
528
526
|
{
|
529
527
|
state.setExecutorSchema(executorSchema);
|
528
|
+
state.setTransactionStage(TransactionStage.OUTPUT_BEGIN);
|
530
529
|
ConfigDiff outputConfigDiff = plugins.getOutputPlugin().transaction(task.getOutputConfig(), executorSchema, outputTaskCount, new OutputPlugin.Control() {
|
531
530
|
public List<TaskReport> run(final TaskSource outputTask)
|
532
531
|
{
|
533
532
|
state.setOutputTaskSource(outputTask);
|
534
|
-
|
535
533
|
state.initialize(inputTaskCount, outputTaskCount);
|
534
|
+
state.setTransactionStage(TransactionStage.RUN);
|
536
535
|
|
537
536
|
if (!state.isAllTasksCommitted()) { // inputTaskCount == 0
|
538
537
|
execute(task, executor, state);
|
@@ -543,18 +542,23 @@ public class BulkLoader
|
|
543
542
|
state.countUncommittedInputTasks(), state.countUncommittedOutputTasks()));
|
544
543
|
}
|
545
544
|
|
545
|
+
state.setTransactionStage(TransactionStage.OUTPUT_COMMIT);
|
546
546
|
return state.getAllOutputTaskReports();
|
547
547
|
}
|
548
548
|
});
|
549
549
|
state.setOutputConfigDiff(outputConfigDiff);
|
550
|
+
state.setTransactionStage(TransactionStage.EXECUTOR_COMMIT);
|
550
551
|
}
|
551
552
|
});
|
553
|
+
state.setTransactionStage(TransactionStage.FILTER_COMMIT);
|
552
554
|
}
|
553
555
|
});
|
556
|
+
state.setTransactionStage(TransactionStage.INPUT_COMMIT);
|
554
557
|
return state.getAllInputTaskReports();
|
555
558
|
}
|
556
559
|
});
|
557
560
|
state.setInputConfigDiff(inputConfigDiff);
|
561
|
+
state.setTransactionStage(TransactionStage.CLEANUP);
|
558
562
|
|
559
563
|
cleanupCommittedTransaction(config, state);
|
560
564
|
|
@@ -565,9 +569,6 @@ public class BulkLoader
|
|
565
569
|
// ignore the exception
|
566
570
|
return state.buildExecuteResultWithWarningException(ex);
|
567
571
|
}
|
568
|
-
if (!state.isAnyStarted()) {
|
569
|
-
throw ex;
|
570
|
-
}
|
571
572
|
throw state.buildPartialExecuteException(ex, Exec.session());
|
572
573
|
}
|
573
574
|
}
|
@@ -580,6 +581,7 @@ public class BulkLoader
|
|
580
581
|
final ProcessPluginSet plugins = new ProcessPluginSet(task);
|
581
582
|
|
582
583
|
final LoaderState state = new LoaderState(Exec.getLogger(BulkLoader.class), plugins);
|
584
|
+
state.setTransactionStage(TransactionStage.INPUT_BEGIN);
|
583
585
|
try {
|
584
586
|
ConfigDiff inputConfigDiff = plugins.getInputPlugin().resume(resume.getInputTaskSource(), resume.getInputSchema(), resume.getInputTaskReports().size(), new InputPlugin.Control() {
|
585
587
|
public List<TaskReport> run(final TaskSource inputTask, final Schema inputSchema, final int inputTaskCount)
|
@@ -587,23 +589,27 @@ public class BulkLoader
|
|
587
589
|
// TODO validate inputTask?
|
588
590
|
// TODO validate inputSchema
|
589
591
|
state.setInputTaskSource(inputTask);
|
592
|
+
state.setTransactionStage(TransactionStage.FILTER_BEGIN);
|
590
593
|
Filters.transaction(plugins.getFilterPlugins(), task.getFilterConfigs(), inputSchema, new Filters.Control() {
|
591
594
|
public void run(final List<TaskSource> filterTasks, final List<Schema> schemas)
|
592
595
|
{
|
593
596
|
state.setSchemas(schemas);
|
594
597
|
state.setFilterTaskSources(filterTasks);
|
598
|
+
state.setTransactionStage(TransactionStage.EXECUTOR_BEGIN);
|
595
599
|
exec.transaction(task.getExecConfig(), last(schemas), inputTaskCount, new ExecutorPlugin.Control() {
|
596
600
|
public void transaction(final Schema executorSchema, final int outputTaskCount, final ExecutorPlugin.Executor executor)
|
597
601
|
{
|
598
602
|
// TODO validate executorSchema
|
599
603
|
state.setExecutorSchema(executorSchema);
|
604
|
+
state.setTransactionStage(TransactionStage.OUTPUT_BEGIN);
|
600
605
|
ConfigDiff outputConfigDiff = plugins.getOutputPlugin().resume(resume.getOutputTaskSource(), executorSchema, outputTaskCount, new OutputPlugin.Control() {
|
601
606
|
public List<TaskReport> run(final TaskSource outputTask)
|
602
607
|
{
|
603
608
|
// TODO validate outputTask?
|
604
609
|
state.setOutputTaskSource(outputTask);
|
605
|
-
|
606
610
|
restoreResumedTaskReports(resume, state);
|
611
|
+
state.setTransactionStage(TransactionStage.RUN);
|
612
|
+
|
607
613
|
if (!state.isAllTasksCommitted()) {
|
608
614
|
execute(task, executor, state);
|
609
615
|
}
|
@@ -613,18 +619,23 @@ public class BulkLoader
|
|
613
619
|
state.countUncommittedInputTasks(), state.countUncommittedOutputTasks()));
|
614
620
|
}
|
615
621
|
|
622
|
+
state.setTransactionStage(TransactionStage.OUTPUT_COMMIT);
|
616
623
|
return state.getAllOutputTaskReports();
|
617
624
|
}
|
618
625
|
});
|
619
626
|
state.setOutputConfigDiff(outputConfigDiff);
|
627
|
+
state.setTransactionStage(TransactionStage.EXECUTOR_COMMIT);
|
620
628
|
}
|
621
629
|
});
|
630
|
+
state.setTransactionStage(TransactionStage.FILTER_COMMIT);
|
622
631
|
}
|
623
632
|
});
|
633
|
+
state.setTransactionStage(TransactionStage.INPUT_COMMIT);
|
624
634
|
return state.getAllInputTaskReports();
|
625
635
|
}
|
626
636
|
});
|
627
637
|
state.setInputConfigDiff(inputConfigDiff);
|
638
|
+
state.setTransactionStage(TransactionStage.CLEANUP);
|
628
639
|
|
629
640
|
cleanupCommittedTransaction(config, state);
|
630
641
|
|
@@ -635,9 +646,6 @@ public class BulkLoader
|
|
635
646
|
// ignore the exception
|
636
647
|
return state.buildExecuteResultWithWarningException(ex);
|
637
648
|
}
|
638
|
-
if (!state.isAnyStarted()) {
|
639
|
-
throw ex;
|
640
|
-
}
|
641
649
|
throw state.buildPartialExecuteException(ex, Exec.session());
|
642
650
|
}
|
643
651
|
}
|
@@ -31,6 +31,7 @@ import org.embulk.spi.FileInput;
|
|
31
31
|
import org.embulk.spi.PageOutput;
|
32
32
|
import org.embulk.spi.TransactionalFileInput;
|
33
33
|
import org.embulk.spi.FileInputRunner;
|
34
|
+
import static org.embulk.spi.util.Inputs.each;
|
34
35
|
|
35
36
|
public class GuessExecutor
|
36
37
|
{
|
@@ -294,7 +295,7 @@ public class GuessExecutor
|
|
294
295
|
final ConfigSource originalConfig = task.getOriginalConfig();
|
295
296
|
|
296
297
|
// get sample buffer
|
297
|
-
Buffer sample =
|
298
|
+
Buffer sample = readSample(input, 32*1024); // TODO get sample size from system config. See also SamplingParserPlugin().
|
298
299
|
|
299
300
|
// load guess plugins
|
300
301
|
ImmutableList.Builder<GuessPlugin> builder = ImmutableList.builder();
|
@@ -320,24 +321,18 @@ public class GuessExecutor
|
|
320
321
|
throw new GuessedNoticeError(mergedGuessed);
|
321
322
|
}
|
322
323
|
|
323
|
-
private static Buffer
|
324
|
+
private static Buffer readSample(FileInput fileInput, int sampleSize)
|
324
325
|
{
|
325
|
-
|
326
|
-
RuntimeException decodeException = null;
|
326
|
+
Buffer sample = Buffer.allocate(sampleSize);
|
327
327
|
try {
|
328
|
-
|
329
|
-
Buffer sample = input.poll();
|
330
|
-
if (sample != null) {
|
331
|
-
return sample;
|
332
|
-
}
|
333
|
-
}
|
328
|
+
SamplingParserPlugin.readSample(fileInput, sample, 0, sampleSize);
|
334
329
|
} catch (RuntimeException ex) {
|
335
330
|
// ignores exceptions because FileDecoderPlugin can throw exceptions
|
336
|
-
// such as "Unexpected end of ZLIB input stream"
|
337
|
-
|
331
|
+
// such as "Unexpected end of ZLIB input stream" if decoder plugin
|
332
|
+
// is wrongly guessed.
|
338
333
|
}
|
339
|
-
if (
|
340
|
-
|
334
|
+
if (sample.limit() > 0) {
|
335
|
+
return sample;
|
341
336
|
}
|
342
337
|
throw new NoSampleException("No input buffer to guess");
|
343
338
|
}
|
@@ -4,15 +4,23 @@ public class PartialExecutionException
|
|
4
4
|
extends RuntimeException
|
5
5
|
{
|
6
6
|
private final ResumeState resumeState;
|
7
|
+
private final TransactionStage transactionStage;
|
7
8
|
|
8
|
-
public PartialExecutionException(Throwable cause, ResumeState resumeState
|
9
|
+
public PartialExecutionException(Throwable cause, ResumeState resumeState,
|
10
|
+
TransactionStage transactionStage)
|
9
11
|
{
|
10
12
|
super(cause);
|
11
13
|
this.resumeState = resumeState;
|
14
|
+
this.transactionStage = transactionStage;
|
12
15
|
}
|
13
16
|
|
14
17
|
public ResumeState getResumeState()
|
15
18
|
{
|
16
19
|
return resumeState;
|
17
20
|
}
|
21
|
+
|
22
|
+
public TransactionStage getTransactionStage()
|
23
|
+
{
|
24
|
+
return transactionStage;
|
25
|
+
}
|
18
26
|
}
|
@@ -90,7 +90,7 @@ public class SamplingParserPlugin
|
|
90
90
|
public SamplingParserPlugin(@ForSystemConfig ConfigSource systemConfig)
|
91
91
|
{
|
92
92
|
this.minSampleSize = 40; // empty gzip file is 33 bytes. // TODO get sample size from system config
|
93
|
-
this.sampleSize = 32*1024; // TODO get sample size from system config
|
93
|
+
this.sampleSize = 32*1024; // TODO get sample size from system config. See also GuessExecutor.run.
|
94
94
|
Preconditions.checkArgument(minSampleSize < sampleSize, "minSampleSize must be smaller than sampleSize");
|
95
95
|
}
|
96
96
|
|
@@ -111,26 +111,32 @@ public class SamplingParserPlugin
|
|
111
111
|
throw new SampledNoticeError(buffer);
|
112
112
|
}
|
113
113
|
|
114
|
-
|
114
|
+
public static Buffer readSample(FileInput fileInput, int sampleSize)
|
115
|
+
{
|
116
|
+
return readSample(fileInput, Buffer.allocate(sampleSize), 0, sampleSize);
|
117
|
+
}
|
118
|
+
|
119
|
+
public static Buffer readSample(FileInput fileInput, Buffer sample, int offset, int sampleSize)
|
115
120
|
{
|
116
121
|
if (!fileInput.nextFile()) {
|
117
122
|
// no input files
|
118
|
-
return
|
123
|
+
return sample;
|
119
124
|
}
|
120
125
|
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
break;
|
126
|
+
try {
|
127
|
+
for (Buffer buffer : each(fileInput)) {
|
128
|
+
int size = Math.min(buffer.limit(), sample.capacity() - offset);
|
129
|
+
sample.setBytes(offset, buffer, 0, size);
|
130
|
+
offset += size;
|
131
|
+
buffer.release();
|
132
|
+
if (offset >= sampleSize) {
|
133
|
+
break;
|
134
|
+
}
|
131
135
|
}
|
132
136
|
}
|
133
|
-
|
137
|
+
finally {
|
138
|
+
sample.limit(offset);
|
139
|
+
}
|
134
140
|
return sample;
|
135
141
|
}
|
136
142
|
}
|
@@ -0,0 +1,27 @@
|
|
1
|
+
package org.embulk.exec;
|
2
|
+
|
3
|
+
public enum TransactionStage
|
4
|
+
{
|
5
|
+
INPUT_BEGIN(1),
|
6
|
+
FILTER_BEGIN(2),
|
7
|
+
EXECUTOR_BEGIN(3),
|
8
|
+
OUTPUT_BEGIN(4),
|
9
|
+
RUN(5),
|
10
|
+
OUTPUT_COMMIT(6),
|
11
|
+
EXECUTOR_COMMIT(7),
|
12
|
+
FILTER_COMMIT(8),
|
13
|
+
INPUT_COMMIT(9),
|
14
|
+
CLEANUP(10);
|
15
|
+
|
16
|
+
private final int index;
|
17
|
+
|
18
|
+
private TransactionStage(int index)
|
19
|
+
{
|
20
|
+
this.index = index;
|
21
|
+
}
|
22
|
+
|
23
|
+
public boolean isBefore(TransactionStage another)
|
24
|
+
{
|
25
|
+
return index < another.index;
|
26
|
+
}
|
27
|
+
}
|
data/embulk-docs/src/release.rst
CHANGED
@@ -0,0 +1,13 @@
|
|
1
|
+
Release 0.7.10
|
2
|
+
==================================
|
3
|
+
|
4
|
+
General Changes
|
5
|
+
------------------
|
6
|
+
|
7
|
+
* Fixed a problem where guessing reads only 512 bytes when input is gzip-compressed and gzip decoder is guseed during the guessing.
|
8
|
+
* Added ``PartialExecutionException.getTransactionStage()`` method that tells in which stage a transaction failed. It will be either of beginning of (input, filter, executor, output), run, end of (output, executor, filter, input), or cleanup.
|
9
|
+
|
10
|
+
|
11
|
+
Release Date
|
12
|
+
------------------
|
13
|
+
2015-12-01
|
data/lib/embulk/runner.rb
CHANGED
@@ -79,18 +79,22 @@ module Embulk
|
|
79
79
|
|
80
80
|
unless executionResult
|
81
81
|
unless resumableResult.isSuccessful
|
82
|
-
|
83
|
-
|
84
|
-
|
82
|
+
if resumableResult.getTransactionStage.isBefore(org.embulk.exec.TransactionStage::RUN)
|
83
|
+
# retry without resume state file if no tasks started yet
|
84
|
+
# delete resume file
|
85
|
+
File.delete(resume_state_path) rescue nil if resume_state_path
|
86
|
+
else
|
87
|
+
Embulk.logger.info "Writing resume state to '#{resume_state_path}'"
|
88
|
+
write_config(resume_state_path, resumableResult.getResumeState)
|
89
|
+
Embulk.logger.info "Resume state is written. Run the transaction again with -r option to resume or use \"cleanup\" subcommand to delete intermediate data."
|
90
|
+
end
|
85
91
|
raise resumableResult.getCause
|
86
92
|
end
|
87
93
|
executionResult = resumableResult.getSuccessfulResult
|
88
94
|
end
|
89
95
|
|
90
96
|
# delete resume file
|
91
|
-
if resume_state_path
|
92
|
-
File.delete(resume_state_path) rescue nil
|
93
|
-
end
|
97
|
+
File.delete(resume_state_path) rescue nil if resume_state_path
|
94
98
|
|
95
99
|
configDiff = executionResult.getConfigDiff
|
96
100
|
Embulk.logger.info("Committed.")
|
data/lib/embulk/version.rb
CHANGED
metadata
CHANGED
@@ -1,113 +1,113 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: embulk
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.7.
|
4
|
+
version: 0.7.10
|
5
5
|
platform: java
|
6
6
|
authors:
|
7
7
|
- Sadayuki Furuhashi
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-12-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name: bundler
|
15
|
-
version_requirements: !ruby/object:Gem::Requirement
|
16
|
-
requirements:
|
17
|
-
- - "~>"
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: 1.10.6
|
20
14
|
requirement: !ruby/object:Gem::Requirement
|
21
15
|
requirements:
|
22
16
|
- - "~>"
|
23
17
|
- !ruby/object:Gem::Version
|
24
18
|
version: 1.10.6
|
19
|
+
name: bundler
|
25
20
|
prerelease: false
|
26
21
|
type: :runtime
|
27
|
-
- !ruby/object:Gem::Dependency
|
28
|
-
name: liquid
|
29
22
|
version_requirements: !ruby/object:Gem::Requirement
|
30
23
|
requirements:
|
31
24
|
- - "~>"
|
32
25
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
26
|
+
version: 1.10.6
|
27
|
+
- !ruby/object:Gem::Dependency
|
34
28
|
requirement: !ruby/object:Gem::Requirement
|
35
29
|
requirements:
|
36
30
|
- - "~>"
|
37
31
|
- !ruby/object:Gem::Version
|
38
32
|
version: 3.0.6
|
33
|
+
name: liquid
|
39
34
|
prerelease: false
|
40
35
|
type: :runtime
|
41
|
-
- !ruby/object:Gem::Dependency
|
42
|
-
name: rjack-icu
|
43
36
|
version_requirements: !ruby/object:Gem::Requirement
|
44
37
|
requirements:
|
45
38
|
- - "~>"
|
46
39
|
- !ruby/object:Gem::Version
|
47
|
-
version:
|
40
|
+
version: 3.0.6
|
41
|
+
- !ruby/object:Gem::Dependency
|
48
42
|
requirement: !ruby/object:Gem::Requirement
|
49
43
|
requirements:
|
50
44
|
- - "~>"
|
51
45
|
- !ruby/object:Gem::Version
|
52
46
|
version: 4.54.1.1
|
47
|
+
name: rjack-icu
|
53
48
|
prerelease: false
|
54
49
|
type: :runtime
|
55
|
-
- !ruby/object:Gem::Dependency
|
56
|
-
name: rake
|
57
50
|
version_requirements: !ruby/object:Gem::Requirement
|
58
51
|
requirements:
|
59
|
-
- - "
|
52
|
+
- - "~>"
|
60
53
|
- !ruby/object:Gem::Version
|
61
|
-
version:
|
54
|
+
version: 4.54.1.1
|
55
|
+
- !ruby/object:Gem::Dependency
|
62
56
|
requirement: !ruby/object:Gem::Requirement
|
63
57
|
requirements:
|
64
58
|
- - ">="
|
65
59
|
- !ruby/object:Gem::Version
|
66
60
|
version: 0.10.0
|
61
|
+
name: rake
|
67
62
|
prerelease: false
|
68
63
|
type: :development
|
69
|
-
- !ruby/object:Gem::Dependency
|
70
|
-
name: test-unit
|
71
64
|
version_requirements: !ruby/object:Gem::Requirement
|
72
65
|
requirements:
|
73
|
-
- - "
|
66
|
+
- - ">="
|
74
67
|
- !ruby/object:Gem::Version
|
75
|
-
version:
|
68
|
+
version: 0.10.0
|
69
|
+
- !ruby/object:Gem::Dependency
|
76
70
|
requirement: !ruby/object:Gem::Requirement
|
77
71
|
requirements:
|
78
72
|
- - "~>"
|
79
73
|
- !ruby/object:Gem::Version
|
80
74
|
version: 3.0.9
|
75
|
+
name: test-unit
|
81
76
|
prerelease: false
|
82
77
|
type: :development
|
83
|
-
- !ruby/object:Gem::Dependency
|
84
|
-
name: yard
|
85
78
|
version_requirements: !ruby/object:Gem::Requirement
|
86
79
|
requirements:
|
87
80
|
- - "~>"
|
88
81
|
- !ruby/object:Gem::Version
|
89
|
-
version: 0.
|
82
|
+
version: 3.0.9
|
83
|
+
- !ruby/object:Gem::Dependency
|
90
84
|
requirement: !ruby/object:Gem::Requirement
|
91
85
|
requirements:
|
92
86
|
- - "~>"
|
93
87
|
- !ruby/object:Gem::Version
|
94
88
|
version: 0.8.7
|
89
|
+
name: yard
|
95
90
|
prerelease: false
|
96
91
|
type: :development
|
97
|
-
- !ruby/object:Gem::Dependency
|
98
|
-
name: kramdown
|
99
92
|
version_requirements: !ruby/object:Gem::Requirement
|
100
93
|
requirements:
|
101
94
|
- - "~>"
|
102
95
|
- !ruby/object:Gem::Version
|
103
|
-
version:
|
96
|
+
version: 0.8.7
|
97
|
+
- !ruby/object:Gem::Dependency
|
104
98
|
requirement: !ruby/object:Gem::Requirement
|
105
99
|
requirements:
|
106
100
|
- - "~>"
|
107
101
|
- !ruby/object:Gem::Version
|
108
102
|
version: 1.5.0
|
103
|
+
name: kramdown
|
109
104
|
prerelease: false
|
110
105
|
type: :development
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - "~>"
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: 1.5.0
|
111
111
|
description: Embulk is an open-source, plugin-based bulk data loader to scale and simplify data management across heterogeneous data stores. It can collect and ship any kinds of data in high throughput with transaction control.
|
112
112
|
email:
|
113
113
|
- frsyuki@gmail.com
|
@@ -133,8 +133,8 @@ files:
|
|
133
133
|
- classpath/bval-jsr303-0.5.jar
|
134
134
|
- classpath/commons-beanutils-core-1.8.3.jar
|
135
135
|
- classpath/commons-lang3-3.1.jar
|
136
|
-
- classpath/embulk-core-0.7.
|
137
|
-
- classpath/embulk-standards-0.7.
|
136
|
+
- classpath/embulk-core-0.7.10.jar
|
137
|
+
- classpath/embulk-standards-0.7.10.jar
|
138
138
|
- classpath/guava-18.0.jar
|
139
139
|
- classpath/guice-4.0.jar
|
140
140
|
- classpath/guice-multibindings-4.0.jar
|
@@ -211,6 +211,7 @@ files:
|
|
211
211
|
- embulk-core/src/main/java/org/embulk/exec/SetCurrentThreadName.java
|
212
212
|
- embulk-core/src/main/java/org/embulk/exec/SystemConfigModule.java
|
213
213
|
- embulk-core/src/main/java/org/embulk/exec/TempFileAllocator.java
|
214
|
+
- embulk-core/src/main/java/org/embulk/exec/TransactionStage.java
|
214
215
|
- embulk-core/src/main/java/org/embulk/guice/Bootstrap.java
|
215
216
|
- embulk-core/src/main/java/org/embulk/guice/CloseableInjector.java
|
216
217
|
- embulk-core/src/main/java/org/embulk/guice/InjectorProxy.java
|
@@ -435,6 +436,7 @@ files:
|
|
435
436
|
- embulk-docs/src/release/release-0.6.9.rst
|
436
437
|
- embulk-docs/src/release/release-0.7.0.rst
|
437
438
|
- embulk-docs/src/release/release-0.7.1.rst
|
439
|
+
- embulk-docs/src/release/release-0.7.10.rst
|
438
440
|
- embulk-docs/src/release/release-0.7.2.rst
|
439
441
|
- embulk-docs/src/release/release-0.7.3.rst
|
440
442
|
- embulk-docs/src/release/release-0.7.4.rst
|