embulk 0.7.9-java → 0.7.10-java
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 +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
|