embulk 0.4.3 → 0.4.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +8 -11
- data/build.gradle +22 -2
- data/embulk-core/src/main/java/org/embulk/command/Runner.java +7 -0
- data/embulk-core/src/main/java/org/embulk/exec/GuessExecutor.java +8 -6
- data/embulk-core/src/main/java/org/embulk/exec/LocalExecutor.java +54 -46
- data/embulk-core/src/main/java/org/embulk/exec/LoggerProvider.java +20 -3
- data/embulk-core/src/main/java/org/embulk/exec/PreviewExecutor.java +41 -10
- data/embulk-core/src/main/java/org/embulk/exec/SamplingParserPlugin.java +1 -1
- data/embulk-core/src/main/java/org/embulk/exec/SetCurrentThreadName.java +19 -0
- data/embulk-core/src/main/java/org/embulk/spi/Exec.java +5 -0
- data/embulk-core/src/main/java/org/embulk/spi/ExecSession.java +24 -0
- data/embulk-core/src/main/java/org/embulk/spi/FileInputPlugin.java +4 -4
- data/embulk-core/src/main/java/org/embulk/spi/FileInputRunner.java +8 -8
- data/embulk-core/src/main/java/org/embulk/spi/FileOutputPlugin.java +4 -4
- data/embulk-core/src/main/java/org/embulk/spi/FileOutputRunner.java +8 -8
- data/embulk-core/src/main/java/org/embulk/spi/InputPlugin.java +4 -4
- data/embulk-core/src/main/java/org/embulk/spi/OutputPlugin.java +4 -4
- data/embulk-core/src/main/java/org/embulk/spi/time/TimestampFormat.java +1 -1
- data/embulk-core/src/main/java/org/embulk/spi/util/FileOutputOutputStream.java +32 -8
- data/embulk-core/src/main/java/org/embulk/spi/util/InputStreamFileInput.java +1 -1
- data/embulk-core/src/main/java/org/embulk/spi/util/LineEncoder.java +3 -4
- data/embulk-core/src/main/java/org/embulk/spi/util/OutputStreamFileOutput.java +88 -0
- data/embulk-core/src/test/java/org/embulk/spi/TestFileInputInputStream.java +1 -1
- data/embulk-core/src/test/java/org/embulk/spi/TestFileInputRunner.java +5 -5
- data/embulk-core/src/test/java/org/embulk/spi/TestFileOutputRunner.java +4 -4
- data/embulk-docs/src/release.rst +1 -0
- data/embulk-docs/src/release/release-0.4.4.rst +39 -0
- data/embulk-standards/src/main/java/org/embulk/standards/GzipFileEncoderPlugin.java +32 -7
- data/embulk-standards/src/main/java/org/embulk/standards/LocalFileInputPlugin.java +9 -9
- data/embulk-standards/src/main/java/org/embulk/standards/LocalFileOutputPlugin.java +6 -6
- data/embulk-standards/src/main/java/org/embulk/standards/NullOutputPlugin.java +5 -5
- data/embulk-standards/src/main/java/org/embulk/standards/StdoutOutputPlugin.java +5 -5
- data/lib/embulk/command/embulk_run.rb +14 -2
- data/lib/embulk/data/new/java/file_input.java.erb +7 -7
- data/lib/embulk/data/new/java/file_output.java.erb +5 -5
- data/lib/embulk/data/new/java/input.java.erb +6 -6
- data/lib/embulk/data/new/java/output.java.erb +5 -5
- data/lib/embulk/data_source.rb +3 -3
- data/lib/embulk/guess_plugin.rb +5 -5
- data/lib/embulk/input_plugin.rb +7 -7
- data/lib/embulk/output_plugin.rb +7 -7
- data/lib/embulk/version.rb +1 -1
- metadata +7 -4
@@ -25,7 +25,7 @@ public class TestFileInputInputStream
|
|
25
25
|
private void newOutputStream()
|
26
26
|
{
|
27
27
|
fileOutput = new MockFileOutput();
|
28
|
-
out = new FileOutputOutputStream(fileOutput, runtime.getBufferAllocator());
|
28
|
+
out = new FileOutputOutputStream(fileOutput, runtime.getBufferAllocator(), FileOutputOutputStream.CloseMode.CLOSE);
|
29
29
|
}
|
30
30
|
|
31
31
|
private void newInputStream()
|
@@ -53,7 +53,7 @@ public class TestFileInputRunner
|
|
53
53
|
|
54
54
|
@Override
|
55
55
|
public ConfigDiff resume(TaskSource taskSource,
|
56
|
-
int
|
56
|
+
int taskCount,
|
57
57
|
FileInputPlugin.Control control)
|
58
58
|
{
|
59
59
|
throw new UnsupportedOperationException();
|
@@ -61,13 +61,13 @@ public class TestFileInputRunner
|
|
61
61
|
|
62
62
|
@Override
|
63
63
|
public void cleanup(TaskSource taskSource,
|
64
|
-
int
|
64
|
+
int taskCount,
|
65
65
|
List<CommitReport> successCommitReports)
|
66
66
|
{
|
67
67
|
}
|
68
68
|
|
69
69
|
public TransactionalFileInput open(TaskSource taskSource,
|
70
|
-
int
|
70
|
+
int taskIndex)
|
71
71
|
{
|
72
72
|
return new TransactionalFileInput()
|
73
73
|
{
|
@@ -127,7 +127,7 @@ public class TestFileInputRunner
|
|
127
127
|
runner.transaction(config, new InputPlugin.Control()
|
128
128
|
{
|
129
129
|
public List<CommitReport> run(TaskSource inputTaskSource,
|
130
|
-
Schema schema, int
|
130
|
+
Schema schema, int taskCount)
|
131
131
|
{
|
132
132
|
List<CommitReport> reports = new ArrayList<>();
|
133
133
|
reports.add(runner.run(inputTaskSource, schema, 0, output));
|
@@ -181,7 +181,7 @@ public class TestFileInputRunner
|
|
181
181
|
runner.transaction(config, new InputPlugin.Control()
|
182
182
|
{
|
183
183
|
public List<CommitReport> run(TaskSource inputTaskSource,
|
184
|
-
Schema schema, int
|
184
|
+
Schema schema, int taskCount)
|
185
185
|
{
|
186
186
|
List<CommitReport> reports = new ArrayList<>();
|
187
187
|
reports.add(runner.run(inputTaskSource, schema, 0, output));
|
@@ -33,7 +33,7 @@ public class TestFileOutputRunner
|
|
33
33
|
Boolean transactionCompleted = null;
|
34
34
|
|
35
35
|
@Override
|
36
|
-
public ConfigDiff transaction(ConfigSource config, int
|
36
|
+
public ConfigDiff transaction(ConfigSource config, int taskCount,
|
37
37
|
FileOutputPlugin.Control control)
|
38
38
|
{
|
39
39
|
PluginTask task = config.loadConfig(PluginTask.class);
|
@@ -43,7 +43,7 @@ public class TestFileOutputRunner
|
|
43
43
|
|
44
44
|
@Override
|
45
45
|
public ConfigDiff resume(TaskSource taskSource,
|
46
|
-
int
|
46
|
+
int taskCount,
|
47
47
|
FileOutputPlugin.Control control)
|
48
48
|
{
|
49
49
|
throw new UnsupportedOperationException();
|
@@ -51,14 +51,14 @@ public class TestFileOutputRunner
|
|
51
51
|
|
52
52
|
@Override
|
53
53
|
public void cleanup(TaskSource taskSource,
|
54
|
-
int
|
54
|
+
int taskCount,
|
55
55
|
List<CommitReport> successCommitReports)
|
56
56
|
{
|
57
57
|
}
|
58
58
|
|
59
59
|
@Override
|
60
60
|
public TransactionalFileOutput open(TaskSource taskSource,
|
61
|
-
final int
|
61
|
+
final int taskIndex)
|
62
62
|
{
|
63
63
|
return new TransactionalFileOutput()
|
64
64
|
{
|
data/embulk-docs/src/release.rst
CHANGED
@@ -0,0 +1,39 @@
|
|
1
|
+
Release 0.4.4
|
2
|
+
==================================
|
3
|
+
|
4
|
+
CLI
|
5
|
+
------------------
|
6
|
+
|
7
|
+
* Supports ``-l, --log-level LEVEL`` option to specify log level. (@ykubota++)
|
8
|
+
|
9
|
+
Plugin API Changes
|
10
|
+
------------------
|
11
|
+
|
12
|
+
* Added ``Exec.isPreview()`` method which returns true if the transaction is running in in preview mode.
|
13
|
+
* Added ``util.OutputStreamFileOutput`` class.
|
14
|
+
* ``util.FileOutputOutputStream`` requires ``CloseMode`` at the constructor.
|
15
|
+
* When ``Embulk::DataSource#prop`` returns a String, Array, or Hash value, it returns a copy of the value.
|
16
|
+
* When ``Embulk::DataSource#prop`` returns a Hash value, it returns ``DataSource`` instance.
|
17
|
+
|
18
|
+
Plugin SPI
|
19
|
+
------------------
|
20
|
+
|
21
|
+
* Changed local variable name ``processorIndex`` to ``taskIndex``.
|
22
|
+
* Changed local variable name ``processorCount`` to ``taskCount``.
|
23
|
+
|
24
|
+
Built-in plugins
|
25
|
+
------------------
|
26
|
+
|
27
|
+
* Added ``gzip`` encoder plugin.
|
28
|
+
|
29
|
+
General Changes
|
30
|
+
------------------
|
31
|
+
|
32
|
+
* ``preview`` runs filter plugins in addition to input plugins.
|
33
|
+
* Fixed a problem of ``guess`` where guess plugins ignore formatter properties (such as ``charset``) guessed by other guess plugins (@hiroyuki-sato++).
|
34
|
+
* Log messages include "transaction", "resume", "cleanup", or task index at the header.
|
35
|
+
* Timestamp in log messages include time zone.
|
36
|
+
|
37
|
+
Release Date
|
38
|
+
------------------
|
39
|
+
2015-02-18
|
@@ -5,12 +5,15 @@ import java.io.IOException;
|
|
5
5
|
import java.util.zip.GZIPOutputStream;
|
6
6
|
import org.embulk.config.Task;
|
7
7
|
import org.embulk.config.Config;
|
8
|
+
import org.embulk.config.ConfigInject;
|
8
9
|
import org.embulk.config.ConfigDefault;
|
9
10
|
import org.embulk.config.TaskSource;
|
10
11
|
import org.embulk.config.ConfigSource;
|
11
12
|
import org.embulk.spi.EncoderPlugin;
|
12
13
|
import org.embulk.spi.FileOutput;
|
14
|
+
import org.embulk.spi.BufferAllocator;
|
13
15
|
import org.embulk.spi.util.FileOutputOutputStream;
|
16
|
+
import org.embulk.spi.util.OutputStreamFileOutput;
|
14
17
|
|
15
18
|
public class GzipFileEncoderPlugin
|
16
19
|
implements EncoderPlugin
|
@@ -18,9 +21,13 @@ public class GzipFileEncoderPlugin
|
|
18
21
|
public interface PluginTask
|
19
22
|
extends Task
|
20
23
|
{
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
+
// TODO java.util.zip.GZIPOutputStream doesn't support compression level
|
25
|
+
//@Config("level")
|
26
|
+
//@ConfigDefault("6")
|
27
|
+
//public int getLevel();
|
28
|
+
|
29
|
+
@ConfigInject
|
30
|
+
public BufferAllocator getBufferAllocator();
|
24
31
|
}
|
25
32
|
|
26
33
|
public void transaction(ConfigSource config, EncoderPlugin.Control control)
|
@@ -30,10 +37,28 @@ public class GzipFileEncoderPlugin
|
|
30
37
|
}
|
31
38
|
|
32
39
|
@Override
|
33
|
-
public FileOutput open(TaskSource taskSource, FileOutput fileOutput)
|
40
|
+
public FileOutput open(TaskSource taskSource, final FileOutput fileOutput)
|
34
41
|
{
|
35
|
-
|
36
|
-
|
37
|
-
|
42
|
+
PluginTask task = taskSource.loadTask(PluginTask.class);
|
43
|
+
|
44
|
+
final FileOutputOutputStream output = new FileOutputOutputStream(fileOutput, task.getBufferAllocator(), FileOutputOutputStream.CloseMode.CLOSE);
|
45
|
+
|
46
|
+
return new OutputStreamFileOutput(new OutputStreamFileOutput.Provider() {
|
47
|
+
public OutputStream openNext() throws IOException
|
48
|
+
{
|
49
|
+
output.nextFile();
|
50
|
+
return new GZIPOutputStream(output);
|
51
|
+
}
|
52
|
+
|
53
|
+
public void finish() throws IOException
|
54
|
+
{
|
55
|
+
fileOutput.finish();
|
56
|
+
}
|
57
|
+
|
58
|
+
public void close() throws IOException
|
59
|
+
{
|
60
|
+
fileOutput.close();
|
61
|
+
}
|
62
|
+
});
|
38
63
|
}
|
39
64
|
}
|
@@ -64,22 +64,22 @@ public class LocalFileInputPlugin
|
|
64
64
|
task.setFiles(files);
|
65
65
|
|
66
66
|
// number of processors is same with number of files
|
67
|
-
int
|
68
|
-
return resume(task.dump(),
|
67
|
+
int taskCount = task.getFiles().size();
|
68
|
+
return resume(task.dump(), taskCount, control);
|
69
69
|
}
|
70
70
|
|
71
71
|
@Override
|
72
72
|
public ConfigDiff resume(TaskSource taskSource,
|
73
|
-
int
|
73
|
+
int taskCount,
|
74
74
|
FileInputPlugin.Control control)
|
75
75
|
{
|
76
|
-
control.run(taskSource,
|
76
|
+
control.run(taskSource, taskCount);
|
77
77
|
return Exec.newConfigDiff();
|
78
78
|
}
|
79
79
|
|
80
80
|
@Override
|
81
81
|
public void cleanup(TaskSource taskSource,
|
82
|
-
int
|
82
|
+
int taskCount,
|
83
83
|
List<CommitReport> successCommitReports)
|
84
84
|
{ }
|
85
85
|
|
@@ -155,10 +155,10 @@ public class LocalFileInputPlugin
|
|
155
155
|
}
|
156
156
|
|
157
157
|
@Override
|
158
|
-
public TransactionalFileInput open(TaskSource taskSource, int
|
158
|
+
public TransactionalFileInput open(TaskSource taskSource, int taskIndex)
|
159
159
|
{
|
160
160
|
PluginTask task = taskSource.loadTask(PluginTask.class);
|
161
|
-
return new LocalFileInput(task,
|
161
|
+
return new LocalFileInput(task, taskIndex);
|
162
162
|
}
|
163
163
|
|
164
164
|
public static class LocalFileInput
|
@@ -191,9 +191,9 @@ public class LocalFileInputPlugin
|
|
191
191
|
public void close() { }
|
192
192
|
}
|
193
193
|
|
194
|
-
public LocalFileInput(PluginTask task, int
|
194
|
+
public LocalFileInput(PluginTask task, int taskIndex)
|
195
195
|
{
|
196
|
-
super(task.getBufferAllocator(), new SingleFileProvider(new File(task.getFiles().get(
|
196
|
+
super(task.getBufferAllocator(), new SingleFileProvider(new File(task.getFiles().get(taskIndex))));
|
197
197
|
}
|
198
198
|
|
199
199
|
@Override
|
@@ -40,7 +40,7 @@ public class LocalFileOutputPlugin
|
|
40
40
|
private final Logger log = Exec.getLogger(getClass());
|
41
41
|
|
42
42
|
@Override
|
43
|
-
public ConfigDiff transaction(ConfigSource config, int
|
43
|
+
public ConfigDiff transaction(ConfigSource config, int taskCount,
|
44
44
|
FileOutputPlugin.Control control)
|
45
45
|
{
|
46
46
|
PluginTask task = config.loadConfig(PluginTask.class);
|
@@ -48,12 +48,12 @@ public class LocalFileOutputPlugin
|
|
48
48
|
// validate sequence_format
|
49
49
|
String.format(task.getSequenceFormat(), 0, 0);
|
50
50
|
|
51
|
-
return resume(task.dump(),
|
51
|
+
return resume(task.dump(), taskCount, control);
|
52
52
|
}
|
53
53
|
|
54
54
|
@Override
|
55
55
|
public ConfigDiff resume(TaskSource taskSource,
|
56
|
-
int
|
56
|
+
int taskCount,
|
57
57
|
FileOutputPlugin.Control control)
|
58
58
|
{
|
59
59
|
control.run(taskSource);
|
@@ -62,12 +62,12 @@ public class LocalFileOutputPlugin
|
|
62
62
|
|
63
63
|
@Override
|
64
64
|
public void cleanup(TaskSource taskSource,
|
65
|
-
int
|
65
|
+
int taskCount,
|
66
66
|
List<CommitReport> successCommitReports)
|
67
67
|
{ }
|
68
68
|
|
69
69
|
@Override
|
70
|
-
public TransactionalFileOutput open(TaskSource taskSource, final int
|
70
|
+
public TransactionalFileOutput open(TaskSource taskSource, final int taskIndex)
|
71
71
|
{
|
72
72
|
PluginTask task = taskSource.loadTask(PluginTask.class);
|
73
73
|
|
@@ -84,7 +84,7 @@ public class LocalFileOutputPlugin
|
|
84
84
|
public void nextFile()
|
85
85
|
{
|
86
86
|
closeFile();
|
87
|
-
String path = pathPrefix + String.format(sequenceFormat,
|
87
|
+
String path = pathPrefix + String.format(sequenceFormat, taskIndex, fileIndex) + pathSuffix;
|
88
88
|
log.info("Writing local file '{}'", path);
|
89
89
|
fileNames.add(path);
|
90
90
|
try {
|
@@ -16,14 +16,14 @@ public class NullOutputPlugin
|
|
16
16
|
{
|
17
17
|
@Override
|
18
18
|
public ConfigDiff transaction(ConfigSource config,
|
19
|
-
Schema schema, int
|
19
|
+
Schema schema, int taskCount,
|
20
20
|
OutputPlugin.Control control)
|
21
21
|
{
|
22
|
-
return resume(Exec.newTaskSource(), schema,
|
22
|
+
return resume(Exec.newTaskSource(), schema, taskCount, control);
|
23
23
|
}
|
24
24
|
|
25
25
|
public ConfigDiff resume(TaskSource taskSource,
|
26
|
-
Schema schema, int
|
26
|
+
Schema schema, int taskCount,
|
27
27
|
OutputPlugin.Control control)
|
28
28
|
{
|
29
29
|
control.run(taskSource);
|
@@ -31,12 +31,12 @@ public class NullOutputPlugin
|
|
31
31
|
}
|
32
32
|
|
33
33
|
public void cleanup(TaskSource taskSource,
|
34
|
-
Schema schema, int
|
34
|
+
Schema schema, int taskCount,
|
35
35
|
List<CommitReport> successCommitReports)
|
36
36
|
{ }
|
37
37
|
|
38
38
|
@Override
|
39
|
-
public TransactionalPageOutput open(TaskSource taskSource, Schema schema, int
|
39
|
+
public TransactionalPageOutput open(TaskSource taskSource, Schema schema, int taskIndex)
|
40
40
|
{
|
41
41
|
return new TransactionalPageOutput() {
|
42
42
|
public void add(Page page)
|
@@ -27,16 +27,16 @@ public class StdoutOutputPlugin
|
|
27
27
|
|
28
28
|
@Override
|
29
29
|
public ConfigDiff transaction(ConfigSource config,
|
30
|
-
Schema schema, int
|
30
|
+
Schema schema, int taskCount,
|
31
31
|
OutputPlugin.Control control)
|
32
32
|
{
|
33
33
|
final PluginTask task = config.loadConfig(PluginTask.class);
|
34
|
-
return resume(task.dump(), schema,
|
34
|
+
return resume(task.dump(), schema, taskCount, control);
|
35
35
|
}
|
36
36
|
|
37
37
|
@Override
|
38
38
|
public ConfigDiff resume(TaskSource taskSource,
|
39
|
-
Schema schema, int
|
39
|
+
Schema schema, int taskCount,
|
40
40
|
OutputPlugin.Control control)
|
41
41
|
{
|
42
42
|
control.run(taskSource);
|
@@ -44,13 +44,13 @@ public class StdoutOutputPlugin
|
|
44
44
|
}
|
45
45
|
|
46
46
|
public void cleanup(TaskSource taskSource,
|
47
|
-
Schema schema, int
|
47
|
+
Schema schema, int taskCount,
|
48
48
|
List<CommitReport> successCommitReports)
|
49
49
|
{ }
|
50
50
|
|
51
51
|
@Override
|
52
52
|
public TransactionalPageOutput open(TaskSource taskSource, final Schema schema,
|
53
|
-
int
|
53
|
+
int taskIndex)
|
54
54
|
{
|
55
55
|
final PluginTask task = taskSource.loadTask(PluginTask.class);
|
56
56
|
|
@@ -32,7 +32,7 @@ module Embulk
|
|
32
32
|
require 'optparse'
|
33
33
|
op = OptionParser.new
|
34
34
|
|
35
|
-
puts "#{Time.now.strftime("%Y-%m-%d %H:%M:%S %
|
35
|
+
puts "#{Time.now.strftime("%Y-%m-%d %H:%M:%S,%3N %z")}: Embulk v#{Embulk::VERSION}"
|
36
36
|
|
37
37
|
load_paths = []
|
38
38
|
classpaths = []
|
@@ -56,6 +56,9 @@ module Embulk
|
|
56
56
|
|
57
57
|
when :run
|
58
58
|
op.banner = "Usage: run <config.yml>"
|
59
|
+
op.on('-l', '--log-level LEVEL', 'Log level (fatal, error, warn, info, or trace)') do |level|
|
60
|
+
options[:logLevel] = level
|
61
|
+
end
|
59
62
|
op.on('-I', '--load-path PATH', 'Add ruby script directory path ($LOAD_PATH)') do |load_path|
|
60
63
|
load_paths << load_path
|
61
64
|
end
|
@@ -71,7 +74,10 @@ module Embulk
|
|
71
74
|
args = 1..1
|
72
75
|
|
73
76
|
when :cleanup
|
74
|
-
op.banner = "Usage:
|
77
|
+
op.banner = "Usage: cleanup <config.yml>"
|
78
|
+
op.on('-l', '--log-level LEVEL', 'Log level (fatal, error, warn, info, or trace)') do |level|
|
79
|
+
options[:logLevel] = level
|
80
|
+
end
|
75
81
|
op.on('-I', '--load-path PATH', 'Add ruby script directory path ($LOAD_PATH)') do |load_path|
|
76
82
|
load_paths << load_path
|
77
83
|
end
|
@@ -85,6 +91,9 @@ module Embulk
|
|
85
91
|
|
86
92
|
when :preview
|
87
93
|
op.banner = "Usage: preview <config.yml>"
|
94
|
+
op.on('-l', '--log-level LEVEL', 'Log level (fatal, error, warn, info, or trace)') do |level|
|
95
|
+
options[:logLevel] = level
|
96
|
+
end
|
88
97
|
op.on('-I', '--load-path PATH', 'Add ruby script directory path ($LOAD_PATH)') do |load_path|
|
89
98
|
load_paths << load_path
|
90
99
|
end
|
@@ -95,6 +104,9 @@ module Embulk
|
|
95
104
|
|
96
105
|
when :guess
|
97
106
|
op.banner = "Usage: guess <partial-config.yml>"
|
107
|
+
op.on('-l', '--log-level LEVEL', 'Log level (fatal, error, warn, info, or trace)') do |level|
|
108
|
+
options[:logLevel] = level
|
109
|
+
end
|
98
110
|
op.on('-o', '--output PATH', 'Path to a file to write the guessed configuration') do |path|
|
99
111
|
options[:nextConfigOutputPath] = path
|
100
112
|
end
|
@@ -31,30 +31,30 @@ public class <%= java_class_name %>
|
|
31
31
|
{
|
32
32
|
PluginTask task = config.loadConfig(PluginTask.class);
|
33
33
|
|
34
|
-
//
|
35
|
-
int
|
34
|
+
// taskCount is usually number of input files
|
35
|
+
int taskCount = 1; // number of run() method calls
|
36
36
|
|
37
|
-
return resume(task.dump(),
|
37
|
+
return resume(task.dump(), taskCount, control);
|
38
38
|
}
|
39
39
|
|
40
40
|
@Override
|
41
41
|
public ConfigDiff resume(TaskSource taskSource,
|
42
|
-
int
|
42
|
+
int taskCount,
|
43
43
|
FileInputPlugin.Control control)
|
44
44
|
{
|
45
|
-
control.run(taskSource,
|
45
|
+
control.run(taskSource, taskCount);
|
46
46
|
return Exec.newConfigDiff();
|
47
47
|
}
|
48
48
|
|
49
49
|
@Override
|
50
50
|
public void cleanup(TaskSource taskSource,
|
51
|
-
int
|
51
|
+
int taskCount,
|
52
52
|
List<CommitReport> successCommitReports)
|
53
53
|
{
|
54
54
|
}
|
55
55
|
|
56
56
|
@Override
|
57
|
-
public TransactionalFileInput open(TaskSource taskSource, int
|
57
|
+
public TransactionalFileInput open(TaskSource taskSource, int taskIndex)
|
58
58
|
{
|
59
59
|
PluginTask task = taskSource.loadTask(PluginTask.class);
|
60
60
|
|