redstorm 0.6.4 → 0.6.5
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.
- data/CHANGELOG.md +9 -0
- data/README.md +206 -103
- data/examples/native/cluster_word_count_topology.rb +5 -5
- data/examples/native/local_exclamation_topology.rb +8 -8
- data/examples/native/local_exclamation_topology2.rb +7 -7
- data/examples/native/local_redis_word_count_topology.rb +7 -8
- data/examples/native/local_word_count_topology.rb +5 -5
- data/examples/simple/exclamation_topology.rb +7 -11
- data/examples/simple/exclamation_topology2.rb +10 -12
- data/examples/simple/hello_world_topology.rb +22 -0
- data/examples/simple/kafka_topology.rb +2 -1
- data/examples/simple/redis_word_count_topology.rb +3 -5
- data/examples/simple/ruby_version_topology.rb +7 -1
- data/examples/simple/word_count_topology.rb +8 -10
- data/ivy/settings.xml +1 -0
- data/ivy/storm_dependencies.xml +8 -0
- data/ivy/topology_dependencies.xml +7 -0
- data/lib/red_storm.rb +1 -0
- data/lib/red_storm/application.rb +9 -7
- data/lib/red_storm/configurator.rb +1 -1
- data/lib/red_storm/proxy/batch_bolt.rb +63 -0
- data/lib/red_storm/proxy/batch_committer_bolt.rb +52 -0
- data/lib/red_storm/proxy/batch_spout.rb +59 -0
- data/lib/red_storm/proxy/proxy_function.rb +40 -0
- data/lib/red_storm/proxy/transactional_committer_spout.rb +47 -0
- data/lib/red_storm/proxy/transactional_spout.rb +46 -0
- data/lib/red_storm/simple_drpc_topology.rb +87 -0
- data/lib/red_storm/simple_topology.rb +14 -4
- data/lib/red_storm/topology_launcher.rb +22 -3
- data/lib/red_storm/version.rb +1 -1
- data/lib/tasks/red_storm.rake +66 -104
- data/redstorm.gemspec +24 -0
- data/src/main/redstorm/storm/jruby/JRubyBatchBolt.java +90 -0
- data/src/main/redstorm/storm/jruby/JRubyBatchCommitterBolt.java +9 -0
- data/src/main/redstorm/storm/jruby/JRubyBatchSpout.java +88 -0
- data/src/main/redstorm/storm/jruby/JRubyProxyFunction.java +51 -0
- data/src/main/redstorm/storm/jruby/JRubyShellSpout.java +1 -1
- data/src/main/redstorm/storm/jruby/JRubyTransactionalBolt.java +90 -0
- data/src/main/redstorm/storm/jruby/JRubyTransactionalCommitterBolt.java +31 -0
- data/src/main/redstorm/storm/jruby/JRubyTransactionalCommitterSpout.java +44 -0
- data/src/main/redstorm/storm/jruby/JRubyTransactionalSpout.java +89 -0
- metadata +35 -14
- data/examples/native/Gemfile +0 -2
@@ -0,0 +1,9 @@
|
|
1
|
+
package redstorm.storm.jruby;
|
2
|
+
|
3
|
+
import backtype.storm.transactional.ICommitter;
|
4
|
+
|
5
|
+
public class JRubyBatchCommitterBolt extends JRubyBatchBolt implements ICommitter {
|
6
|
+
public JRubyBatchCommitterBolt(String baseClassPath, String realBoltClassName, String[] fields) {
|
7
|
+
super(baseClassPath, realBoltClassName, fields);
|
8
|
+
}
|
9
|
+
}
|
@@ -0,0 +1,88 @@
|
|
1
|
+
package redstorm.storm.jruby;
|
2
|
+
|
3
|
+
import backtype.storm.tuple.Fields;
|
4
|
+
import backtype.storm.task.TopologyContext;
|
5
|
+
import storm.trident.operation.TridentCollector;
|
6
|
+
import storm.trident.spout.IBatchSpout;
|
7
|
+
import java.util.Map;
|
8
|
+
|
9
|
+
/**
|
10
|
+
* the JRubySpout class is a simple proxy class to the actual spout implementation in JRuby.
|
11
|
+
* this proxy is required to bypass the serialization/deserialization process when dispatching
|
12
|
+
* the spout to the workers. JRuby does not yet support serialization from Java
|
13
|
+
* (Java serialization call on a JRuby class).
|
14
|
+
*
|
15
|
+
* Note that the JRuby spout proxy class is instanciated in the open method which is called after
|
16
|
+
* deserialization at the worker and in both the declareOutputFields and isDistributed methods which
|
17
|
+
* are called once before serialization at topology creation.
|
18
|
+
*/
|
19
|
+
public class JRubyBatchSpout implements IBatchSpout {
|
20
|
+
IBatchSpout _proxySpout;
|
21
|
+
String _realSpoutClassName;
|
22
|
+
String _baseClassPath;
|
23
|
+
|
24
|
+
/**
|
25
|
+
* create a new JRubySpout
|
26
|
+
*
|
27
|
+
* @param baseClassPath the topology/project base JRuby class file path
|
28
|
+
* @param realSpoutClassName the fully qualified JRuby spout implementation class name
|
29
|
+
*/
|
30
|
+
public JRubyBatchSpout(String baseClassPath, String realSpoutClassName) {
|
31
|
+
_baseClassPath = baseClassPath;
|
32
|
+
_realSpoutClassName = realSpoutClassName;
|
33
|
+
}
|
34
|
+
|
35
|
+
@Override
|
36
|
+
public void open(final Map conf, final TopologyContext context) {
|
37
|
+
// create instance of the jruby proxy class here, after deserialization in the workers.
|
38
|
+
_proxySpout = newProxySpout(_baseClassPath, _realSpoutClassName);
|
39
|
+
_proxySpout.open(conf, context);
|
40
|
+
}
|
41
|
+
|
42
|
+
@Override
|
43
|
+
public void emitBatch(long batchId, TridentCollector collector) {
|
44
|
+
_proxySpout.emitBatch(batchId, collector);
|
45
|
+
}
|
46
|
+
|
47
|
+
@Override
|
48
|
+
public void close() {
|
49
|
+
_proxySpout.close();
|
50
|
+
}
|
51
|
+
|
52
|
+
@Override
|
53
|
+
public void ack(long batchId) {
|
54
|
+
_proxySpout.ack(batchId);
|
55
|
+
}
|
56
|
+
|
57
|
+
@Override
|
58
|
+
public Fields getOutputFields() {
|
59
|
+
if (_proxySpout == null) {
|
60
|
+
// getOutputFields is executed in the topology creation time before serialisation.
|
61
|
+
// do not set the _proxySpout instance variable here to avoid JRuby serialization
|
62
|
+
// issues. Just create tmp spout instance to call getOutputFields.
|
63
|
+
IBatchSpout spout = newProxySpout(_baseClassPath, _realSpoutClassName);
|
64
|
+
return spout.getOutputFields();
|
65
|
+
} else {
|
66
|
+
return _proxySpout.getOutputFields();
|
67
|
+
}
|
68
|
+
}
|
69
|
+
|
70
|
+
@Override
|
71
|
+
public Map<String, Object> getComponentConfiguration() {
|
72
|
+
// getComponentConfiguration is executed in the topology creation time before serialisation.
|
73
|
+
// do not set the _proxySpout instance variable here to avoid JRuby serialization
|
74
|
+
// issues. Just create tmp spout instance to call declareOutputFields.
|
75
|
+
IBatchSpout spout = newProxySpout(_baseClassPath, _realSpoutClassName);
|
76
|
+
return spout.getComponentConfiguration();
|
77
|
+
}
|
78
|
+
|
79
|
+
private static IBatchSpout newProxySpout(String baseClassPath, String realSpoutClassName) {
|
80
|
+
try {
|
81
|
+
redstorm.proxy.BatchSpout proxy = new redstorm.proxy.BatchSpout(baseClassPath, realSpoutClassName);
|
82
|
+
return proxy;
|
83
|
+
}
|
84
|
+
catch (Exception e) {
|
85
|
+
throw new RuntimeException(e);
|
86
|
+
}
|
87
|
+
}
|
88
|
+
}
|
@@ -0,0 +1,51 @@
|
|
1
|
+
package redstorm.storm.jruby;
|
2
|
+
|
3
|
+
import storm.trident.tuple.TridentTuple;
|
4
|
+
import storm.trident.operation.TridentCollector;
|
5
|
+
import java.util.Map;
|
6
|
+
import storm.trident.operation.TridentOperationContext;
|
7
|
+
import storm.trident.operation.Function;
|
8
|
+
|
9
|
+
public class JRubyProxyFunction implements Function {
|
10
|
+
Function _proxy;
|
11
|
+
String _realClassName;
|
12
|
+
String _baseClassPath;
|
13
|
+
|
14
|
+
public JRubyProxyFunction(final String baseClassPath, final String realClassName) {
|
15
|
+
_baseClassPath = baseClassPath;
|
16
|
+
_realClassName = realClassName;
|
17
|
+
}
|
18
|
+
|
19
|
+
|
20
|
+
@Override
|
21
|
+
public void execute(final TridentTuple _tridentTuple, final TridentCollector _tridentCollector) {
|
22
|
+
if(_proxy == null) {
|
23
|
+
_proxy = newProxy(_baseClassPath, _realClassName);
|
24
|
+
}
|
25
|
+
_proxy.execute(_tridentTuple, _tridentCollector);
|
26
|
+
}
|
27
|
+
|
28
|
+
@Override
|
29
|
+
public void cleanup() {
|
30
|
+
_proxy.cleanup();
|
31
|
+
}
|
32
|
+
|
33
|
+
@Override
|
34
|
+
public void prepare(final Map _map, final TridentOperationContext _tridentOperationContext) {
|
35
|
+
if(_proxy == null) {
|
36
|
+
_proxy = newProxy(_baseClassPath, _realClassName);
|
37
|
+
}
|
38
|
+
_proxy.prepare(_map, _tridentOperationContext);
|
39
|
+
}
|
40
|
+
|
41
|
+
|
42
|
+
private static Function newProxy(final String baseClassPath, final String realClassName) {
|
43
|
+
try {
|
44
|
+
redstorm.proxy.ProxyFunction proxy = new redstorm.proxy.ProxyFunction(baseClassPath, realClassName);
|
45
|
+
return proxy;
|
46
|
+
}
|
47
|
+
catch (Exception e) {
|
48
|
+
throw new RuntimeException(e);
|
49
|
+
}
|
50
|
+
}
|
51
|
+
}
|
@@ -0,0 +1,90 @@
|
|
1
|
+
package redstorm.storm.jruby;
|
2
|
+
|
3
|
+
import backtype.storm.task.OutputCollector;
|
4
|
+
import backtype.storm.task.TopologyContext;
|
5
|
+
import backtype.storm.transactional.TransactionAttempt;
|
6
|
+
import backtype.storm.topology.base.BaseTransactionalBolt;
|
7
|
+
import backtype.storm.coordination.BatchOutputCollector;
|
8
|
+
import backtype.storm.coordination.IBatchBolt;
|
9
|
+
import backtype.storm.topology.OutputFieldsDeclarer;
|
10
|
+
import backtype.storm.tuple.Tuple;
|
11
|
+
import backtype.storm.tuple.Fields;
|
12
|
+
import java.util.Map;
|
13
|
+
|
14
|
+
/**
|
15
|
+
* the JRubyBolt class is a simple proxy class to the actual bolt implementation in JRuby.
|
16
|
+
* this proxy is required to bypass the serialization/deserialization process when dispatching
|
17
|
+
* the bolts to the workers. JRuby does not yet support serialization from Java
|
18
|
+
* (Java serialization call on a JRuby class).
|
19
|
+
*
|
20
|
+
* Note that the JRuby bolt proxy class is instanciated in the prepare method which is called after
|
21
|
+
* deserialization at the worker and in the declareOutputFields method which is called once before
|
22
|
+
* serialization at topology creation.
|
23
|
+
*/
|
24
|
+
public class JRubyTransactionalBolt extends BaseTransactionalBolt {
|
25
|
+
IBatchBolt _proxyBolt;
|
26
|
+
String _realBoltClassName;
|
27
|
+
String _baseClassPath;
|
28
|
+
String[] _fields;
|
29
|
+
|
30
|
+
/**
|
31
|
+
* create a new JRubyBolt
|
32
|
+
*
|
33
|
+
* @param baseClassPath the topology/project base JRuby class file path
|
34
|
+
* @param realBoltClassName the fully qualified JRuby bolt implementation class name
|
35
|
+
*/
|
36
|
+
public JRubyTransactionalBolt(String baseClassPath, String realBoltClassName, String[] fields) {
|
37
|
+
_baseClassPath = baseClassPath;
|
38
|
+
_realBoltClassName = realBoltClassName;
|
39
|
+
_fields = fields;
|
40
|
+
}
|
41
|
+
|
42
|
+
@Override
|
43
|
+
public void prepare(final Map stormConf, final TopologyContext context, final BatchOutputCollector collector, final TransactionAttempt id) {
|
44
|
+
// create instance of the jruby class here, after deserialization in the workers.
|
45
|
+
_proxyBolt = newProxyBolt(_baseClassPath, _realBoltClassName);
|
46
|
+
_proxyBolt.prepare(stormConf, context, collector, id);
|
47
|
+
}
|
48
|
+
|
49
|
+
@Override
|
50
|
+
public void execute(Tuple input) {
|
51
|
+
_proxyBolt.execute(input);
|
52
|
+
}
|
53
|
+
|
54
|
+
@Override
|
55
|
+
public void finishBatch() {
|
56
|
+
_proxyBolt.finishBatch();
|
57
|
+
}
|
58
|
+
|
59
|
+
@Override
|
60
|
+
public void declareOutputFields(OutputFieldsDeclarer declarer) {
|
61
|
+
// declareOutputFields is executed in the topology creation time, before serialisation.
|
62
|
+
// do not set the _proxyBolt instance variable here to avoid JRuby serialization
|
63
|
+
// issues. Just create tmp bolt instance to call declareOutputFields.
|
64
|
+
if (_fields.length > 0) {
|
65
|
+
declarer.declare(new Fields(_fields));
|
66
|
+
} else {
|
67
|
+
IBatchBolt bolt = newProxyBolt(_baseClassPath, _realBoltClassName);
|
68
|
+
bolt.declareOutputFields(declarer);
|
69
|
+
}
|
70
|
+
}
|
71
|
+
|
72
|
+
@Override
|
73
|
+
public Map<String, Object> getComponentConfiguration() {
|
74
|
+
// getComponentConfiguration is executed in the topology creation time, before serialisation.
|
75
|
+
// do not set the _proxyBolt instance variable here to avoid JRuby serialization
|
76
|
+
// issues. Just create tmp bolt instance to call declareOutputFields.
|
77
|
+
IBatchBolt bolt = newProxyBolt(_baseClassPath, _realBoltClassName);
|
78
|
+
return bolt.getComponentConfiguration();
|
79
|
+
}
|
80
|
+
|
81
|
+
private static IBatchBolt newProxyBolt(String baseClassPath, String realBoltClassName) {
|
82
|
+
try {
|
83
|
+
redstorm.proxy.BatchBolt proxy = new redstorm.proxy.BatchBolt(baseClassPath, realBoltClassName);
|
84
|
+
return proxy;
|
85
|
+
}
|
86
|
+
catch (Exception e) {
|
87
|
+
throw new RuntimeException(e);
|
88
|
+
}
|
89
|
+
}
|
90
|
+
}
|
@@ -0,0 +1,31 @@
|
|
1
|
+
package redstorm.storm.jruby;
|
2
|
+
|
3
|
+
import backtype.storm.coordination.IBatchBolt;
|
4
|
+
import backtype.storm.transactional.TransactionAttempt;
|
5
|
+
import backtype.storm.transactional.ICommitter;
|
6
|
+
|
7
|
+
/**
|
8
|
+
* the JRubyBolt class is a simple proxy class to the actual bolt implementation in JRuby.
|
9
|
+
* this proxy is required to bypass the serialization/deserialization process when dispatching
|
10
|
+
* the bolts to the workers. JRuby does not yet support serialization from Java
|
11
|
+
* (Java serialization call on a JRuby class).
|
12
|
+
*
|
13
|
+
* Note that the JRuby bolt proxy class is instanciated in the prepare method which is called after
|
14
|
+
* deserialization at the worker and in the declareOutputFields method which is called once before
|
15
|
+
* serialization at topology creation.
|
16
|
+
*/
|
17
|
+
public class JRubyTransactionalCommitterBolt extends JRubyTransactionalBolt implements ICommitter {
|
18
|
+
public JRubyTransactionalCommitterBolt(String baseClassPath, String realBoltClassName, String[] fields) {
|
19
|
+
super(baseClassPath, realBoltClassName, fields);
|
20
|
+
}
|
21
|
+
|
22
|
+
private static IBatchBolt newProxyBolt(String baseClassPath, String realBoltClassName) {
|
23
|
+
try {
|
24
|
+
redstorm.proxy.BatchCommitterBolt proxy = new redstorm.proxy.BatchCommitterBolt(baseClassPath, realBoltClassName);
|
25
|
+
return proxy;
|
26
|
+
}
|
27
|
+
catch (Exception e) {
|
28
|
+
throw new RuntimeException(e);
|
29
|
+
}
|
30
|
+
}
|
31
|
+
}
|
@@ -0,0 +1,44 @@
|
|
1
|
+
package redstorm.storm.jruby;
|
2
|
+
|
3
|
+
import backtype.storm.transactional.ICommitterTransactionalSpout;
|
4
|
+
import backtype.storm.transactional.ITransactionalSpout;
|
5
|
+
import backtype.storm.task.TopologyContext;
|
6
|
+
import java.util.Map;
|
7
|
+
|
8
|
+
/**
|
9
|
+
* the JRubyBolt class is a simple proxy class to the actual bolt implementation in JRuby.
|
10
|
+
* this proxy is required to bypass the serialization/deserialization process when dispatching
|
11
|
+
* the bolts to the workers. JRuby does not yet support serialization from Java
|
12
|
+
* (Java serialization call on a JRuby class).
|
13
|
+
*
|
14
|
+
* Note that the JRuby bolt proxy class is instanciated in the prepare method which is called after
|
15
|
+
* deserialization at the worker and in the declareOutputFields method which is called once before
|
16
|
+
* serialization at topology creation.
|
17
|
+
*/
|
18
|
+
public class JRubyTransactionalCommitterSpout extends JRubyTransactionalSpout implements ICommitterTransactionalSpout {
|
19
|
+
|
20
|
+
ICommitterTransactionalSpout _proxySpout;
|
21
|
+
|
22
|
+
public JRubyTransactionalCommitterSpout(String baseClassPath, String realSpoutClassName, String[] fields) {
|
23
|
+
super(baseClassPath, realSpoutClassName, fields);
|
24
|
+
}
|
25
|
+
|
26
|
+
@Override
|
27
|
+
public ICommitterTransactionalSpout.Emitter getEmitter(Map conf, TopologyContext context) {
|
28
|
+
// create instance of the jruby class here, after deserialization in the workers.
|
29
|
+
if (_proxySpout == null) {
|
30
|
+
_proxySpout = newProxySpout(_baseClassPath, _realSpoutClassName);
|
31
|
+
}
|
32
|
+
return _proxySpout.getEmitter(conf, context);
|
33
|
+
}
|
34
|
+
|
35
|
+
private static ICommitterTransactionalSpout newProxySpout(String baseClassPath, String realSpoutClassName) {
|
36
|
+
try {
|
37
|
+
redstorm.proxy.TransactionalCommitterSpout proxy = new redstorm.proxy.TransactionalCommitterSpout(baseClassPath, realSpoutClassName);
|
38
|
+
return proxy;
|
39
|
+
}
|
40
|
+
catch (Exception e) {
|
41
|
+
throw new RuntimeException(e);
|
42
|
+
}
|
43
|
+
}
|
44
|
+
}
|
@@ -0,0 +1,89 @@
|
|
1
|
+
package redstorm.storm.jruby;
|
2
|
+
|
3
|
+
import backtype.storm.spout.SpoutOutputCollector;
|
4
|
+
import backtype.storm.task.TopologyContext;
|
5
|
+
import backtype.storm.topology.base.BaseTransactionalSpout;
|
6
|
+
import backtype.storm.topology.OutputFieldsDeclarer;
|
7
|
+
import backtype.storm.transactional.ITransactionalSpout;
|
8
|
+
import backtype.storm.tuple.Tuple;
|
9
|
+
import backtype.storm.tuple.Fields;
|
10
|
+
import java.util.Map;
|
11
|
+
|
12
|
+
/**
|
13
|
+
* the JRubySpout class is a simple proxy class to the actual spout implementation in JRuby.
|
14
|
+
* this proxy is required to bypass the serialization/deserialization process when dispatching
|
15
|
+
* the spout to the workers. JRuby does not yet support serialization from Java
|
16
|
+
* (Java serialization call on a JRuby class).
|
17
|
+
*
|
18
|
+
* Note that the JRuby spout proxy class is instanciated in the open method which is called after
|
19
|
+
* deserialization at the worker and in both the declareOutputFields and isDistributed methods which
|
20
|
+
* are called once before serialization at topology creation.
|
21
|
+
*/
|
22
|
+
public class JRubyTransactionalSpout extends BaseTransactionalSpout {
|
23
|
+
ITransactionalSpout _proxySpout;
|
24
|
+
String _realSpoutClassName;
|
25
|
+
String _baseClassPath;
|
26
|
+
String[] _fields;
|
27
|
+
|
28
|
+
/**
|
29
|
+
* create a new JRubySpout
|
30
|
+
*
|
31
|
+
* @param baseClassPath the topology/project base JRuby class file path
|
32
|
+
* @param realSpoutClassName the fully qualified JRuby spout implementation class name
|
33
|
+
*/
|
34
|
+
public JRubyTransactionalSpout(String baseClassPath, String realSpoutClassName, String[] fields) {
|
35
|
+
_baseClassPath = baseClassPath;
|
36
|
+
_realSpoutClassName = realSpoutClassName;
|
37
|
+
_fields = fields;
|
38
|
+
}
|
39
|
+
|
40
|
+
@Override
|
41
|
+
public ITransactionalSpout.Coordinator getCoordinator(Map conf, TopologyContext context) {
|
42
|
+
// create instance of the jruby class here, after deserialization in the workers.
|
43
|
+
if (_proxySpout == null) {
|
44
|
+
_proxySpout = newProxySpout(_baseClassPath, _realSpoutClassName);
|
45
|
+
}
|
46
|
+
return _proxySpout.getCoordinator(conf, context);
|
47
|
+
}
|
48
|
+
|
49
|
+
@Override
|
50
|
+
public ITransactionalSpout.Emitter getEmitter(Map conf, TopologyContext context) {
|
51
|
+
// create instance of the jruby class here, after deserialization in the workers.
|
52
|
+
if (_proxySpout == null) {
|
53
|
+
_proxySpout = newProxySpout(_baseClassPath, _realSpoutClassName);
|
54
|
+
}
|
55
|
+
return _proxySpout.getEmitter(conf, context);
|
56
|
+
}
|
57
|
+
|
58
|
+
@Override
|
59
|
+
public void declareOutputFields(OutputFieldsDeclarer declarer) {
|
60
|
+
// declareOutputFields is executed in the topology creation time before serialisation.
|
61
|
+
// do not set the _proxySpout instance variable here to avoid JRuby serialization
|
62
|
+
// issues. Just create tmp spout instance to call declareOutputFields.
|
63
|
+
if (_fields.length > 0) {
|
64
|
+
declarer.declare(new Fields(_fields));
|
65
|
+
} else {
|
66
|
+
ITransactionalSpout spout = newProxySpout(_baseClassPath, _realSpoutClassName);
|
67
|
+
spout.declareOutputFields(declarer);
|
68
|
+
}
|
69
|
+
}
|
70
|
+
|
71
|
+
@Override
|
72
|
+
public Map<String, Object> getComponentConfiguration() {
|
73
|
+
// getComponentConfiguration is executed in the topology creation time before serialisation.
|
74
|
+
// do not set the _proxySpout instance variable here to avoid JRuby serialization
|
75
|
+
// issues. Just create tmp spout instance to call declareOutputFields.
|
76
|
+
ITransactionalSpout spout = newProxySpout(_baseClassPath, _realSpoutClassName);
|
77
|
+
return spout.getComponentConfiguration();
|
78
|
+
}
|
79
|
+
|
80
|
+
private static ITransactionalSpout newProxySpout(String baseClassPath, String realSpoutClassName) {
|
81
|
+
try {
|
82
|
+
redstorm.proxy.TransactionalSpout proxy = new redstorm.proxy.TransactionalSpout(baseClassPath, realSpoutClassName);
|
83
|
+
return proxy;
|
84
|
+
}
|
85
|
+
catch (Exception e) {
|
86
|
+
throw new RuntimeException(e);
|
87
|
+
}
|
88
|
+
}
|
89
|
+
}
|
metadata
CHANGED
@@ -1,27 +1,27 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: redstorm
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.6.5
|
4
5
|
prerelease:
|
5
|
-
version: 0.6.4
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Colin Surprenant
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2013-05-15 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rspec
|
16
16
|
version_requirements: !ruby/object:Gem::Requirement
|
17
17
|
requirements:
|
18
|
-
- - ~>
|
18
|
+
- - "~>"
|
19
19
|
- !ruby/object:Gem::Version
|
20
20
|
version: 2.11.0
|
21
21
|
none: false
|
22
22
|
requirement: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - ~>
|
24
|
+
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: 2.11.0
|
27
27
|
none: false
|
@@ -31,15 +31,17 @@ dependencies:
|
|
31
31
|
name: rake
|
32
32
|
version_requirements: !ruby/object:Gem::Requirement
|
33
33
|
requirements:
|
34
|
-
- -
|
34
|
+
- - ">="
|
35
35
|
- !ruby/object:Gem::Version
|
36
|
-
version:
|
36
|
+
version: !binary |-
|
37
|
+
MA==
|
37
38
|
none: false
|
38
39
|
requirement: !ruby/object:Gem::Requirement
|
39
40
|
requirements:
|
40
|
-
- -
|
41
|
+
- - ">="
|
41
42
|
- !ruby/object:Gem::Version
|
42
|
-
version:
|
43
|
+
version: !binary |-
|
44
|
+
MA==
|
43
45
|
none: false
|
44
46
|
prerelease: false
|
45
47
|
type: :runtime
|
@@ -58,17 +60,25 @@ files:
|
|
58
60
|
- lib/red_storm/environment.rb
|
59
61
|
- lib/red_storm/loggable.rb
|
60
62
|
- lib/red_storm/simple_bolt.rb
|
63
|
+
- lib/red_storm/simple_drpc_topology.rb
|
61
64
|
- lib/red_storm/simple_spout.rb
|
62
65
|
- lib/red_storm/simple_topology.rb
|
63
66
|
- lib/red_storm/topology_launcher.rb
|
64
67
|
- lib/red_storm/version.rb
|
68
|
+
- lib/red_storm/proxy/batch_bolt.rb
|
69
|
+
- lib/red_storm/proxy/batch_committer_bolt.rb
|
70
|
+
- lib/red_storm/proxy/batch_spout.rb
|
65
71
|
- lib/red_storm/proxy/bolt.rb
|
72
|
+
- lib/red_storm/proxy/proxy_function.rb
|
66
73
|
- lib/red_storm/proxy/spout.rb
|
74
|
+
- lib/red_storm/proxy/transactional_committer_spout.rb
|
75
|
+
- lib/red_storm/proxy/transactional_spout.rb
|
67
76
|
- lib/tasks/red_storm.rake
|
68
77
|
- ivy/settings.xml
|
78
|
+
- ivy/storm_dependencies.xml
|
79
|
+
- ivy/topology_dependencies.xml
|
69
80
|
- examples/native/cluster_word_count_topology.rb
|
70
81
|
- examples/native/exclamation_bolt.rb
|
71
|
-
- examples/native/Gemfile
|
72
82
|
- examples/native/local_exclamation_topology.rb
|
73
83
|
- examples/native/local_exclamation_topology2.rb
|
74
84
|
- examples/native/local_redis_word_count_topology.rb
|
@@ -82,6 +92,7 @@ files:
|
|
82
92
|
- examples/simple/exclamation_bolt.rb
|
83
93
|
- examples/simple/exclamation_topology.rb
|
84
94
|
- examples/simple/exclamation_topology2.rb
|
95
|
+
- examples/simple/hello_world_topology.rb
|
85
96
|
- examples/simple/kafka_topology.rb
|
86
97
|
- examples/simple/random_sentence_spout.rb
|
87
98
|
- examples/simple/redis_word_count_topology.rb
|
@@ -89,11 +100,20 @@ files:
|
|
89
100
|
- examples/simple/split_sentence_bolt.rb
|
90
101
|
- examples/simple/word_count_bolt.rb
|
91
102
|
- examples/simple/word_count_topology.rb
|
103
|
+
- src/main/redstorm/storm/jruby/JRubyBatchBolt.java
|
104
|
+
- src/main/redstorm/storm/jruby/JRubyBatchCommitterBolt.java
|
105
|
+
- src/main/redstorm/storm/jruby/JRubyBatchSpout.java
|
92
106
|
- src/main/redstorm/storm/jruby/JRubyBolt.java
|
107
|
+
- src/main/redstorm/storm/jruby/JRubyProxyFunction.java
|
93
108
|
- src/main/redstorm/storm/jruby/JRubyShellBolt.java
|
94
109
|
- src/main/redstorm/storm/jruby/JRubyShellSpout.java
|
95
110
|
- src/main/redstorm/storm/jruby/JRubySpout.java
|
111
|
+
- src/main/redstorm/storm/jruby/JRubyTransactionalBolt.java
|
112
|
+
- src/main/redstorm/storm/jruby/JRubyTransactionalCommitterBolt.java
|
113
|
+
- src/main/redstorm/storm/jruby/JRubyTransactionalCommitterSpout.java
|
114
|
+
- src/main/redstorm/storm/jruby/JRubyTransactionalSpout.java
|
96
115
|
- bin/redstorm
|
116
|
+
- redstorm.gemspec
|
97
117
|
- Rakefile
|
98
118
|
- README.md
|
99
119
|
- CHANGELOG.md
|
@@ -106,15 +126,17 @@ require_paths:
|
|
106
126
|
- lib
|
107
127
|
required_ruby_version: !ruby/object:Gem::Requirement
|
108
128
|
requirements:
|
109
|
-
- -
|
129
|
+
- - ">="
|
110
130
|
- !ruby/object:Gem::Version
|
111
|
-
version:
|
131
|
+
version: !binary |-
|
132
|
+
MA==
|
112
133
|
none: false
|
113
134
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
114
135
|
requirements:
|
115
|
-
- -
|
136
|
+
- - ">="
|
116
137
|
- !ruby/object:Gem::Version
|
117
|
-
version:
|
138
|
+
version: !binary |-
|
139
|
+
MA==
|
118
140
|
none: false
|
119
141
|
requirements: []
|
120
142
|
rubyforge_project: redstorm
|
@@ -123,4 +145,3 @@ signing_key:
|
|
123
145
|
specification_version: 3
|
124
146
|
summary: JRuby on Storm
|
125
147
|
test_files: []
|
126
|
-
...
|