forked from github/game-off-2012
/
nathanmarz-storm.json
1 lines (1 loc) · 59 KB
/
nathanmarz-storm.json
1
[{"body": "I found that by setting the supervior_id to optional in the struct definition I am able to get a response from<br/><br/>```ruby <br/>client.getClusterInfo()<br/>```<br/><br/>When it is set as required I am getting <br/><br/>```<br/>Thrift::Exception: Required field supervisors is unset!<br/>```<br/><br/>", "user": {"avatar_url": "https://secure.gravatar.com/avatar/f565202919771fbcdf236a3ee06d5b10?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"}, "outcome": "reject", "id": "https://api.github.com/repos/nathanmarz/storm/pulls/399", "title": "set supervisor_id as optional"}, {"body": "Display stack trace instead of plain white screen when exception happens in action method of UI.<br/>It's very useful for me to see exception in browser. For example, I can understand when nimbus isn't available or topology with specified name isn't exists, etc.<br/><br/>Screenshot: http://f.slukjanov.name/storm/ui-errors-demo.png<br/><br/>P.S. we can write tons of handlers to write error message like \"Nimbus isn't available\", but I think that this information is easy parseable from stack traces.", "user": {"avatar_url": "https://secure.gravatar.com/avatar/e4234ee8fa255d88d737672485bc12c8?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"}, "outcome": "merge", "id": "https://api.github.com/repos/nathanmarz/storm/pulls/395", "title": "catch-errors middleware added"}, {"body": "Simple way to kill all topologies in Storm cluster.<br/><br/>build: http://f.frostman.ru/tsc-dists/storm-0.8.2-wip15-killall.zip", "user": {"avatar_url": "https://secure.gravatar.com/avatar/e4234ee8fa255d88d737672485bc12c8?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"}, "outcome": "reject", "id": "https://api.github.com/repos/nathanmarz/storm/pulls/394", "title": "kill --all flag"}, {"body": "for issue #334", "user": {"avatar_url": "https://secure.gravatar.com/avatar/2e4b76a1b6ac1809a564333068ba1760?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"}, "outcome": "merge", "id": "https://api.github.com/repos/nathanmarz/storm/pulls/388", "title": "expose testing/test-tuple into java api"}, {"body": "for issue #324", "user": {"avatar_url": "https://secure.gravatar.com/avatar/2e4b76a1b6ac1809a564333068ba1760?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"}, "outcome": "merge", "id": "https://api.github.com/repos/nathanmarz/storm/pulls/387", "title": "add projection validation for stream methods"}, {"body": "This provides a valid command for shell processes send back an exception or general error message. This would allow a viewable error in the UI for ease in production.<br/><br/>I continue to see \"failed tuples\" in my shell processes, but I can not see the underlying reason for them without seeking out the individual worker log and line.<br/><br/>This change should allow a user to see the passed exception from the shell process straight to the UI for easy diagnoses and debugging.<br/><br/>The only edit I would make is to either move this functionality to the \"log\" command or create a specific exception class like ShellTupleException for more clear messages.<br/>", "user": {"avatar_url": "https://secure.gravatar.com/avatar/f8e6593112a03bd822ecf2da64630c24?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"}, "outcome": "merge", "id": "https://api.github.com/repos/nathanmarz/storm/pulls/380", "title": "Add a way to send an exception through shellbolt"}, {"body": "fix for #374<br/><br/>After adding lein version check we should parse the sixth line of project.clj instead of first to take version from it.", "user": {"avatar_url": "https://secure.gravatar.com/avatar/e4234ee8fa255d88d737672485bc12c8?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"}, "outcome": "merge", "id": "https://api.github.com/repos/nathanmarz/storm/pulls/375", "title": "bin/build_release.sh fixed"}, {"body": "Currently \"lein (uber)jar\" silently fails when using lein >= 2, and \"lein test\" complains about missing files on the classpath.<br/><br/>This is a pain when you're trying to get your dev environment setup for Storm, after following every instruction to a tee, only to have nothing work. As long as Storm is incompatible with lein 2.x, a big warning should be included somewhere in the docs telling the user to use lein 1.x<br/>", "user": {"avatar_url": "https://secure.gravatar.com/avatar/2410b95d82bae7b93788a5d40e14d736?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"}, "outcome": "merge", "id": "https://api.github.com/repos/nathanmarz/storm/pulls/366", "title": "Include a warning about Leiningen 2.x in docs"}, {"body": "This lets you run the jetty server alongside the repl, which makes it easier to do development on the UI. The use of 'defonce' lets you recompile without worrying that the server gets redefined. The following commands start/stop the server from the repl:<br/><br/>(.start server)<br/>(.stop server)", "user": {"avatar_url": "https://secure.gravatar.com/avatar/2410b95d82bae7b93788a5d40e14d736?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"}, "outcome": "merge", "id": "https://api.github.com/repos/nathanmarz/storm/pulls/364", "title": "Make UI friendly to repl development by not joining jetty thread"}, {"body": "Issue 308: https://github.com/nathanmarz/storm/issues/308<br/>Leaving supervisors alone for now.", "user": {"avatar_url": "https://secure.gravatar.com/avatar/ae80494d1dab44bcee77271ce4f63017?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"}, "outcome": "merge", "id": "https://api.github.com/repos/nathanmarz/storm/pulls/354", "title": "Add Configuration Information to UI"}, {"body": "", "user": {"avatar_url": "https://secure.gravatar.com/avatar/e4234ee8fa255d88d737672485bc12c8?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"}, "outcome": "merge", "id": "https://api.github.com/repos/nathanmarz/storm/pulls/349", "title": "IntelliJ IDEA project/workspace files added to gitignore"}, {"body": "Some screenshots: http://f.frostman.ru/storm/ui-tplg-actions/", "user": {"avatar_url": "https://secure.gravatar.com/avatar/e4234ee8fa255d88d737672485bc12c8?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"}, "outcome": "merge", "id": "https://api.github.com/repos/nathanmarz/storm/pulls/348", "title": "Topology base actions buttons added to the UI"}, {"body": "", "user": {"avatar_url": "https://secure.gravatar.com/avatar/e2ab1b5a01dc6ab3dabd65f1070f6a57?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"}, "outcome": "reject", "id": "https://api.github.com/repos/nathanmarz/storm/pulls/346", "title": "Update src/multilang/py/storm.py"}, {"body": "A storm user was not printing exceptions thrown by StormSubmitter, wasted a bit of time because nimbus.log had no info about it.", "user": {"avatar_url": "https://secure.gravatar.com/avatar/74c804ddbe8b3e9caa3d30c88d8c9665?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"}, "outcome": "merge", "id": "https://api.github.com/repos/nathanmarz/storm/pulls/344", "title": "log topology submission issues"}, {"body": "for issue #332", "user": {"avatar_url": "https://secure.gravatar.com/avatar/2e4b76a1b6ac1809a564333068ba1760?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"}, "outcome": "reject", "id": "https://api.github.com/repos/nathanmarz/storm/pulls/339", "title": "add api for specifing name for stream/bolt"}, {"body": "for issue #324", "user": {"avatar_url": "https://secure.gravatar.com/avatar/2e4b76a1b6ac1809a564333068ba1760?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"}, "outcome": "reject", "id": "https://api.github.com/repos/nathanmarz/storm/pulls/338", "title": "add validation for the projection field"}, {"body": "Hostname of Nimbus should be taken from conf files instead of hardcoded \"localhost\".", "user": {"avatar_url": "https://secure.gravatar.com/avatar/e4234ee8fa255d88d737672485bc12c8?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"}, "outcome": "merge", "id": "https://api.github.com/repos/nathanmarz/storm/pulls/329", "title": "Storm UI: take nimbus host from the conf"}, {"body": "https://github.com/nathanmarz/storm/issues/289", "user": {"avatar_url": "https://secure.gravatar.com/avatar/74c804ddbe8b3e9caa3d30c88d8c9665?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"}, "outcome": "merge", "id": "https://api.github.com/repos/nathanmarz/storm/pulls/328", "title": "Create Trident interface for getting full contents of a state"}, {"body": "https://github.com/nathanmarz/storm/issues/267", "user": {"avatar_url": "https://secure.gravatar.com/avatar/74c804ddbe8b3e9caa3d30c88d8c9665?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"}, "outcome": "merge", "id": "https://api.github.com/repos/nathanmarz/storm/pulls/327", "title": "Make it possible to submit topology in inactive state"}, {"body": "I could also rewrite this to be slightly more pythonic as opposed to using globals if you'd like. Are there tests for this script?", "user": {"avatar_url": "https://secure.gravatar.com/avatar/082fc9da4328aa0cebfecf836d1b66c7?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"}, "outcome": "reject", "id": "https://api.github.com/repos/nathanmarz/storm/pulls/320", "title": "Default to ipv4"}, {"body": "Adds `boolean contains(String field)` method to `Fields` and `Tuple` to check whether a tuple contains a specified field or not as in 0.7.*. Please see also #317.\n", "user": {"avatar_url": "https://secure.gravatar.com/avatar/ef45a84b10aa3cb5acd2ea0c9846bd3b?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"}, "outcome": "merge", "id": "https://api.github.com/repos/nathanmarz/storm/pulls/319", "title": "add 'contains' method to Fields and Tuple."}, {"body": "", "user": {"avatar_url": "https://secure.gravatar.com/avatar/f89adbc8e686e72004d8be6902a89d74?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"}, "outcome": "merge", "id": "https://api.github.com/repos/nathanmarz/storm/pulls/318", "title": "Fix directory bug in install_zmq.sh"}, {"body": "", "user": {"avatar_url": "https://secure.gravatar.com/avatar/74c804ddbe8b3e9caa3d30c88d8c9665?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"}, "outcome": "merge", "id": "https://api.github.com/repos/nathanmarz/storm/pulls/315", "title": "support kryo decorators"}, {"body": "", "user": {"avatar_url": "https://secure.gravatar.com/avatar/e48a04bbe3a75a9686f689ef8c6378a1?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"}, "outcome": "merge", "id": "https://api.github.com/repos/nathanmarz/storm/pulls/314", "title": "Fixes typo in CHANGELOG.md"}, {"body": "for #243.<br/>Added -conffile option to use original yaml file.<br/>>storm jar allmycode.jar -conffile org.yaml org.me.MyTopology arg1 arg2 arg3<br/>( Conf filename must be written in relative path from ~/.storm/)<br/><br/>Also added -confdir option to use orignal confdir, instead of ~/.storm . ", "user": {"avatar_url": "https://secure.gravatar.com/avatar/5de063e47d0da381a3848e761a059a7a?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"}, "outcome": "reject", "id": "https://api.github.com/repos/nathanmarz/storm/pulls/312", "title": "original conf file #243."}, {"body": "", "user": {"avatar_url": "https://secure.gravatar.com/avatar/74c804ddbe8b3e9caa3d30c88d8c9665?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"}, "outcome": "reject", "id": "https://api.github.com/repos/nathanmarz/storm/pulls/300", "title": "log4j switched to logback & upgrade to leiningen 2"}, {"body": "Hi Nathan,\n\nHere's a quick fix to upgrade slf4j-* deps for storm to the latest 1.6.6 version.\nNamely, the most-wanted feature in slf4j-api 1.6.0 not available in1.5.* is\nhttp://slf4j.org/faq.html#paramException\n\nslf4j-api is already there from thrift7 deps so I had to add it explicitly in the list of deps (backward compatible)\n\nthanks\n-adrian\n\n\n", "user": {"avatar_url": "https://secure.gravatar.com/avatar/b853a8b2fbf5d4026d4ca660e05daa4b?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"}, "outcome": "reject", "id": "https://api.github.com/repos/nathanmarz/storm/pulls/295", "title": "Update slf4j-* to 1.6.6 version"}, {"body": "After doing some profiling of a real-life topology implemented in Python, I found that a lot of time was spent communicating between ShellSpout or ShellBolt and the actual spout or bolt code in Python. After making the attached changes to ShellSpout and ShellBolt, and making a couple of changes to storm.py, the communication time was 2.5x faster.\n\nThe primary change to storm.py was adding an optional \"need_task_ids\" parameter to emitSpout() and emitBolt().\n\nI followed this up by adding new storm.py functions emitManySpout() and emitManyBolt(). Using these functions to batch up the emission of tuples improved communication performance about another 25%.", "user": {"avatar_url": "https://secure.gravatar.com/avatar/37a1fc4b6d13be9f49dc08937fd815ab?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"}, "outcome": "reject", "id": "https://api.github.com/repos/nathanmarz/storm/pulls/294", "title": "Change ShellSpout and ShellBolt so that returning task IDs to the spout or bolt is optional"}, {"body": "", "user": {"avatar_url": "https://secure.gravatar.com/avatar/74c804ddbe8b3e9caa3d30c88d8c9665?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"}, "outcome": "reject", "id": "https://api.github.com/repos/nathanmarz/storm/pulls/293", "title": "switch log4j to logback"}, {"body": "This is for issue https://github.com/nathanmarz/storm/issues/280", "user": {"avatar_url": "https://secure.gravatar.com/avatar/74c804ddbe8b3e9caa3d30c88d8c9665?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"}, "outcome": "merge", "id": "https://api.github.com/repos/nathanmarz/storm/pulls/291", "title": "detect existing topology before uploading jar"}, {"body": "Sorry, reverting partially my change.\n\nI'm currently busy with implementing a MongoDB State and It's just impossible to have something like:\n\n```java\nstate = new MongoState<TransactionalValue<S>>(template, TransactionalValue<S>.class);\ncachedMap = new CachedMap<TransactionalValue<S>>(state, opts.localCacheSize);\nreturn TransactionalMap.build(cachedMap);\n```\n\nAnd i need to pass the entityClass as argument because i need it for the mongo template to automaticly serialize / deserialize the pojo. \n\n```java\nstate = new MongoState<TransactionalValue>(template, TransactionalValue.class);\ncachedMap = new CachedMap<TransactionalValue>(state, opts.localCacheSize);\nreturn TransactionalMap.<S>build(cachedMap);\n```\n\nit will be then", "user": {"avatar_url": "https://secure.gravatar.com/avatar/37564a5a58c789097a6caef80b8d5629?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"}, "outcome": "merge", "id": "https://api.github.com/repos/nathanmarz/storm/pulls/288", "title": "Reverting the generics tightening because nested generics in java are limited"}, {"body": "Fix for issue #285", "user": {"avatar_url": "https://secure.gravatar.com/avatar/37564a5a58c789097a6caef80b8d5629?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"}, "outcome": "merge", "id": "https://api.github.com/repos/nathanmarz/storm/pulls/286", "title": "Fixes for Generics usage in Trident"}, {"body": "Debos-MacBook-Pro:bin ddutta$ git diff e264a25\ndiff --git a/bin/install_zmq.sh b/bin/install_zmq.sh\nindex 016af46..f70772d 100755\n--- a/bin/install_zmq.sh\n+++ b/bin/install_zmq.sh\n@@ -1,5 +1,5 @@\n #!/bin/bash\n-export JAVA_HOME=$(/usr/libexec/java_home)\n+export JAVA_HOME=${JAVA_HOME:/usr/libexec/java_home}\n \n if [ ! -d \"$JAVA_HOME/include\" ]; then\n echo \"\n", "user": {"avatar_url": "https://secure.gravatar.com/avatar/ac5fd0906704549d69a72834866dc8fc?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"}, "outcome": "merge", "id": "https://api.github.com/repos/nathanmarz/storm/pulls/284", "title": "Solves Issue 273 + we need to set JAVA_HOME from env vars"}, {"body": "This is a simple bump to the latest version of netflix/curator that maintains compatibility with zookeeper 3.3.x.\n\n**Notes related to upgrading to curator 1.1.x/zookeeper 3.4.x:**\n- zookeeper 3.4.x uses Netty internally rather than NIO directly - this will impact the method for creating an in-process zookeeper in \"zookeeper.clj\" (mk-inprocess-zookeeper).\n- The above issue can possibly be addressed by using some of the curator-test classes for creating in-proc zookeeper servers.\n- Looks like there are some authentication options in the latest version of curator/zookeeper.\n\nI tried a bump to curator 1.1.16/zookeeper 3.4.5 by reusing curator test classes (modified the the mk-inprocess-zookeeper method). It made the tests run excruciatingly slow with a bunch of stacktraces. Tests passed, but I didn't trust the result. I'll continue investigating at some point.\n", "user": {"avatar_url": "https://secure.gravatar.com/avatar/423abccbed514c8464e12ae1479003a9?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"}, "outcome": "reject", "id": "https://api.github.com/repos/nathanmarz/storm/pulls/277", "title": "Update Curator Version"}, {"body": "Currently Cluster.getNeedsSchedulingExecutorToComponents returns all the executors rather than just the executors needs scheduling. It is fixed by change the type of ExecutorDetails.startTask/endTask from Integer to int, because `new Integer(10) != new Integer(10)`. Also done some cleanup.", "user": {"avatar_url": "https://secure.gravatar.com/avatar/2e4b76a1b6ac1809a564333068ba1760?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"}, "outcome": "merge", "id": "https://api.github.com/repos/nathanmarz/storm/pulls/275", "title": "fix Cluster.getNeedsSchedulingExecutorToComponents & some cleanup"}, {"body": "The location currently specified does not exist.", "user": {"avatar_url": "https://secure.gravatar.com/avatar/7fbbdb7f7f1f23c01d2fe69e143f623f?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"}, "outcome": "merge", "id": "https://api.github.com/repos/nathanmarz/storm/pulls/271", "title": "Modifying URI to download zeromq-2.1.7 from."}, {"body": "I've added any ouput from the error stream of the subprocess to the detail message of the RuntimeException thrown to make it easier to figure out why the subprocess exited unexpectedly.", "user": {"avatar_url": "https://secure.gravatar.com/avatar/7fbbdb7f7f1f23c01d2fe69e143f623f?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"}, "outcome": "merge", "id": "https://api.github.com/repos/nathanmarz/storm/pulls/270", "title": "More detailed error messages when the shell subprocess pipe closes."}, {"body": "implemented the java version of 'testing'", "user": {"avatar_url": "https://secure.gravatar.com/avatar/2e4b76a1b6ac1809a564333068ba1760?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"}, "outcome": "merge", "id": "https://api.github.com/repos/nathanmarz/storm/pulls/266", "title": "Issue72"}, {"body": "I moved the call to {Bolt, BasicBolt, Spout}.initialize into the try ... except block in storm.py so that exceptions during initialization get logged.", "user": {"avatar_url": "https://secure.gravatar.com/avatar/3bfcb61f363fa990002448607fed123b?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"}, "outcome": "merge", "id": "https://api.github.com/repos/nathanmarz/storm/pulls/256", "title": "Moved initialize call in Bolt and BasicBolt into try ... except block"}, {"body": "Bolth.", "user": {"avatar_url": "https://secure.gravatar.com/avatar/c8a7750a333cfb27a1c72aa61b73b763?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"}, "outcome": "reject", "id": "https://api.github.com/repos/nathanmarz/storm/pulls/249", "title": "Clears up a lot of confusing nomenclature."}, {"body": "This patch forces supervisor realize task-ids that it will flush into the local state file. Without the realization, supervisor can stop due to ClassNotFoundException in some rare cases.", "user": {"avatar_url": "https://secure.gravatar.com/avatar/478f1804873811a3f4207377b8d638a0?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"}, "outcome": "reject", "id": "https://api.github.com/repos/nathanmarz/storm/pulls/246", "title": "0.7.2"}, {"body": "Add info about the taskId that is emtting, failing, or acking tuples, and the spout taskId to which ack and fail events are sent. This would be very useful for, say, a custom monitoring system implemented on top of the hooks. The taskId allows all of the events to be correlated to the local worker JVM's tasks.\n\nI didn't see any tests for hooks.\n\nI have other ideas for extending hooks:\n- Add an event for calling execute(tuple) on a bolt task\n- Add hooks for starting and cleaning up a child worker\n- Add documentation :)", "user": {"avatar_url": "https://secure.gravatar.com/avatar/ff98cf6f84857684c813d81c7a40b12a?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"}, "outcome": "reject", "id": "https://api.github.com/repos/nathanmarz/storm/pulls/242", "title": "0.8.0 better hooks"}, {"body": "for issue #164", "user": {"avatar_url": "https://secure.gravatar.com/avatar/2e4b76a1b6ac1809a564333068ba1760?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"}, "outcome": "merge", "id": "https://api.github.com/repos/nathanmarz/storm/pulls/239", "title": "storm pluggable scheduler"}, {"body": "Using os.system() for creating the JVM forks a child of the Python\nprocess. This makes it difficult for process managers like daemontools\nor runit to kill/restart the process at admins' command: the process\nmanager tracks the PID of the Python process instead of that of the JVM;\nand terminating the Python process unfortunately doesn't kill its JVM\nchild.\n\nSome process managers let you configure the number of times the service\nforks, or try to detect forks, but it's a bit of a rabbit-hole. Better\nto make the service not fork in the first place.\n\nFor that reason I've replaced the call to os.system() with os.execvp(),\nwhich replaces the Python process with the JVM, and thus lets the\nprocess manager track the right PID.\n\nos.execvp() requires that you give command-line arguments as an array of\nstrings, rather than one long whitespace-separated string, so I had to\nchange some of the surrounding code accordingly. Note this has the\npleasant side-effect that Storm should now also run if you install it in\na directory that has spaces in its path name.", "user": {"avatar_url": "https://secure.gravatar.com/avatar/0d4ef9af8e4f0cf5c162b48ba24faea6?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"}, "outcome": "merge", "id": "https://api.github.com/repos/nathanmarz/storm/pulls/238", "title": "Use exec instead of forked child process for JVM"}, {"body": "I think this is simpler bug-fix version than yours.\nin my code, I make the CoordinatedBolt ack the tuple from COORDINATED_STREAM_ID stream only if its received tuple count is equal to expectedTupleCount for the specified source task. ", "user": {"avatar_url": "https://secure.gravatar.com/avatar/33b70c796b9b0e6563ea1bcccbeccfee?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"}, "outcome": "reject", "id": "https://api.github.com/repos/nathanmarz/storm/pulls/237", "title": "a simpler bug fix version for CoordinatedBolt"}, {"body": "I have seen your fix version and think it's too complicated.\nI make a simple fix , please have a look. Thank you!", "user": {"avatar_url": "https://secure.gravatar.com/avatar/33b70c796b9b0e6563ea1bcccbeccfee?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"}, "outcome": "reject", "id": "https://api.github.com/repos/nathanmarz/storm/pulls/236", "title": "a bug fix for CoordinatedBolt"}, {"body": "for issue #233", "user": {"avatar_url": "https://secure.gravatar.com/avatar/2e4b76a1b6ac1809a564333068ba1760?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"}, "outcome": "merge", "id": "https://api.github.com/repos/nathanmarz/storm/pulls/234", "title": "Fix TransactionalTopologyBuilder NPE"}, {"body": "Replaces the Curator 1.0.x series dependency with 1.1.3, which introduces ZooKeeper 3.4.2. Changed the in-process ZK server to use the new NIOServerCnxnFactory in ZooKeeper 3.4.x.\n\nZK 3.4.x clients are compatible with ZK 3.3.x ensembles.\n\nThis change makes Storm compatible with HBase 0.92, which requires the new ZK 3.4 API.", "user": {"avatar_url": "https://secure.gravatar.com/avatar/335167822802991c14298e9bcd86c45e?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"}, "outcome": "merge", "id": "https://api.github.com/repos/nathanmarz/storm/pulls/225", "title": "Update to Curator 1.1.3/ZooKeeper 3.4.x"}, {"body": "for issue #164", "user": {"avatar_url": "https://secure.gravatar.com/avatar/2e4b76a1b6ac1809a564333068ba1760?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"}, "outcome": "reject", "id": "https://api.github.com/repos/nathanmarz/storm/pulls/224", "title": "pluggable scheduler for storm"}, {"body": "for issue #89", "user": {"avatar_url": "https://secure.gravatar.com/avatar/2e4b76a1b6ac1809a564333068ba1760?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"}, "outcome": "merge", "id": "https://api.github.com/repos/nathanmarz/storm/pulls/213", "title": "add a button in storm-ui to show/hide system stats"}, {"body": "executeBinary returns java.nio.ByteBuffer, legacy \"execute\" method now<br/>converts from ByteBuffer to String using default encoding", "user": {"avatar_url": "https://secure.gravatar.com/avatar/283b8cef7a285ecd06b5a1cf1c98daa7?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"}, "outcome": "reject", "id": "https://api.github.com/repos/nathanmarz/storm/pulls/211", "title": "Converted the DRPC mechanism to use binary (ByteBuffer) results sets but preserve String output for existing users."}, {"body": "for issue #97", "user": {"avatar_url": "https://secure.gravatar.com/avatar/2e4b76a1b6ac1809a564333068ba1760?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"}, "outcome": "merge", "id": "https://api.github.com/repos/nathanmarz/storm/pulls/207", "title": "change to do worker-heartbeat rather than task-heartbeat"}, {"body": "for issue #205", "user": {"avatar_url": "https://secure.gravatar.com/avatar/2e4b76a1b6ac1809a564333068ba1760?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"}, "outcome": "merge", "id": "https://api.github.com/repos/nathanmarz/storm/pulls/206", "title": "validate storm components subscribe from existing components/streams"}, {"body": "for issue #172<br/><br/>I changed the messaging protocol a little:<br/>* the connection no longer listen on virtual-port(task-id), they listen on a worker port now.<br/>* send-local-task-empty function is removed -- because the task does not listen on a socket anymore, we dont need to unblock the socket, we can just put an empty byte-array into the receive-queue directly.", "user": {"avatar_url": "https://secure.gravatar.com/avatar/2e4b76a1b6ac1809a564333068ba1760?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"}, "outcome": "merge", "id": "https://api.github.com/repos/nathanmarz/storm/pulls/200", "title": "Optimize sending tuples between tasks colocated in same worker"}, {"body": "To enable proper subclassing including super() usage, new-style classes are required.", "user": {"avatar_url": "https://secure.gravatar.com/avatar/de1963fbed1a7d77e6d9a319ae406c1e?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"}, "outcome": "merge", "id": "https://api.github.com/repos/nathanmarz/storm/pulls/197", "title": "multilang: Use new-style classes in Python."}, {"body": "Since exceptions (e.g. when the shell process crashes) are thrown in new threads now, the ShellBolt keeps on running.<br/><br/>Does this patch fix all such issues?", "user": {"avatar_url": "https://secure.gravatar.com/avatar/86f15f999f6d493bbe34f517a9cc2816?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"}, "outcome": "merge", "id": "https://api.github.com/repos/nathanmarz/storm/pulls/195", "title": "fix issue with shell bolts not restarting"}, {"body": "", "user": {"avatar_url": "https://secure.gravatar.com/avatar/fa3a5cda172454dc81fd57e77419dfb9?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"}, "outcome": "merge", "id": "https://api.github.com/repos/nathanmarz/storm/pulls/193", "title": "clojure 1.4 compat"}, {"body": "note the version of my carbonite fork needs to be changed. I issued a separate pull request on storm/carbonite for that.", "user": {"avatar_url": "https://secure.gravatar.com/avatar/fa3a5cda172454dc81fd57e77419dfb9?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"}, "outcome": "reject", "id": "https://api.github.com/repos/nathanmarz/storm/pulls/192", "title": "bumped to clojure 1.4, all tests passing"}, {"body": "perfect solution for issue #109 :)", "user": {"avatar_url": "https://secure.gravatar.com/avatar/2e4b76a1b6ac1809a564333068ba1760?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"}, "outcome": "merge", "id": "https://api.github.com/repos/nathanmarz/storm/pulls/187", "title": "ensure each process use its unique zk port in local mode(perfect solution)"}, {"body": "for issue #185", "user": {"avatar_url": "https://secure.gravatar.com/avatar/2e4b76a1b6ac1809a564333068ba1760?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"}, "outcome": "merge", "id": "https://api.github.com/repos/nathanmarz/storm/pulls/186", "title": "fix the issue: \"Timeouts in CoordinatedBolt can cause NPE later on\""}, {"body": "for issue #162 . I added a new config: **topology.max.blot.pending** to let user specify the threshold.", "user": {"avatar_url": "https://secure.gravatar.com/avatar/2e4b76a1b6ac1809a564333068ba1760?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"}, "outcome": "reject", "id": "https://api.github.com/repos/nathanmarz/storm/pulls/183", "title": "log warnning message when un-acked tuples in a bolt gets too large"}, {"body": "for issue #120", "user": {"avatar_url": "https://secure.gravatar.com/avatar/2e4b76a1b6ac1809a564333068ba1760?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"}, "outcome": "merge", "id": "https://api.github.com/repos/nathanmarz/storm/pulls/182", "title": "add a config in storm.yaml to override local hostname"}, {"body": "for issue #109 , changed much code in **cluster_test.clj**, because added a **let** clause in each test method, need to format the existing code a little bit.", "user": {"avatar_url": "https://secure.gravatar.com/avatar/2e4b76a1b6ac1809a564333068ba1760?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"}, "outcome": "reject", "id": "https://api.github.com/repos/nathanmarz/storm/pulls/181", "title": "ensure each process use its unique zk port in local mode"}, {"body": "for issue #170", "user": {"avatar_url": "https://secure.gravatar.com/avatar/2e4b76a1b6ac1809a564333068ba1760?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"}, "outcome": "reject", "id": "https://api.github.com/repos/nathanmarz/storm/pulls/178", "title": "add warnning message when not enough slots available for topology"}, {"body": "for issue #92", "user": {"avatar_url": "https://secure.gravatar.com/avatar/2e4b76a1b6ac1809a564333068ba1760?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"}, "outcome": "merge", "id": "https://api.github.com/repos/nathanmarz/storm/pulls/177", "title": "resolved the issue that when a topology has not been assigned a task, the storm-ui breaks"}, {"body": "for issue #166", "user": {"avatar_url": "https://secure.gravatar.com/avatar/2e4b76a1b6ac1809a564333068ba1760?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"}, "outcome": "merge", "id": "https://api.github.com/repos/nathanmarz/storm/pulls/175", "title": "implemented the command: 'storm list'"}, {"body": "for issue #169", "user": {"avatar_url": "https://secure.gravatar.com/avatar/2e4b76a1b6ac1809a564333068ba1760?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"}, "outcome": "merge", "id": "https://api.github.com/repos/nathanmarz/storm/pulls/174", "title": "add storm release version in storm-ui"}, {"body": "Without the changes, slf4j-log4j12 resolves to version 1.5.8, which ends up conflicting with slf4j-api 1.6 resolved by sbt in a build of ScalaStorm:<br/><br/>```[error] SLF4J: The requested version 1.5.8 by your slf4j binding is not compatible with [1.6]```<br/>```[error] SLF4J: See http://www.slf4j.org/codes.html#version_mismatch for further details.```<br/><br/>With the changes, Storm uses the current slf4j 1.6.4, and everyone seems happy.", "user": {"avatar_url": "https://secure.gravatar.com/avatar/aaa2e907159f6919c4a4c8039d46752f?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"}, "outcome": "reject", "id": "https://api.github.com/repos/nathanmarz/storm/pulls/167", "title": "replace slf4j 1.5.8 with slf4j 1.6.4"}, {"body": "I changed the protocol like so:<br/><br/>```<br/>-> {\"pidDir\": \"...\", \"conf\": {...}, \"context\": {...}}<br/><- {\"pid\": 123}<br/>-> {\"command\": \"next\"}<br/><- {\"tuple\":[\"bertels\u4eba\"],\"id\":1,\"command\":\"emit\"}<br/>-> [3]<br/><- {\"command\":\"sync\"}<br/>```", "user": {"avatar_url": "https://secure.gravatar.com/avatar/86f15f999f6d493bbe34f517a9cc2816?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"}, "outcome": "merge", "id": "https://api.github.com/repos/nathanmarz/storm/pulls/165", "title": "JSON compliance in shell protocol, with Python and Ruby impls"}, {"body": "Just uses JSON for everything, including the pid/piddir, which cleans up both the Java implementation and multilang implementations slightly.<br/><br/>This is currently based on your fix-shell-encoding.", "user": {"avatar_url": "https://secure.gravatar.com/avatar/86f15f999f6d493bbe34f517a9cc2816?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"}, "outcome": "merge", "id": "https://api.github.com/repos/nathanmarz/storm/pulls/161", "title": "Simplify shell protocol"}, {"body": "", "user": {"avatar_url": "https://secure.gravatar.com/avatar/607bc440dcb87a0649b380e0e217590e?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"}, "outcome": "merge", "id": "https://api.github.com/repos/nathanmarz/storm/pulls/159", "title": "for issue #44"}, {"body": "Fields receives a list of strings that is stored internally on an ArrayList however it is indexed with a HashMap and field indexes can be retrieved by name (Tuple fields can be retrieved by name too) therefore Fields should prevent duplicates to avoid ambiguity and internal inconsistencies between _index and _fields.<br/><br/>I couldn't find tests for this class so I've added those as well.", "user": {"avatar_url": "https://secure.gravatar.com/avatar/a17ce5cbbdb0d5053d75eac39107b66b?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"}, "outcome": "merge", "id": "https://api.github.com/repos/nathanmarz/storm/pulls/157", "title": "prevent duplicates on Fields"}, {"body": "I have made the modifications we talked about :)", "user": {"avatar_url": "https://secure.gravatar.com/avatar/607bc440dcb87a0649b380e0e217590e?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"}, "outcome": "reject", "id": "https://api.github.com/repos/nathanmarz/storm/pulls/156", "title": "for issue #111"}, {"body": "", "user": {"avatar_url": "https://secure.gravatar.com/avatar/607bc440dcb87a0649b380e0e217590e?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"}, "outcome": "reject", "id": "https://api.github.com/repos/nathanmarz/storm/pulls/152", "title": "for issue #145"}, {"body": "", "user": {"avatar_url": "https://secure.gravatar.com/avatar/86f15f999f6d493bbe34f517a9cc2816?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"}, "outcome": "reject", "id": "https://api.github.com/repos/nathanmarz/storm/pulls/148", "title": "allow destructuring of tuple arg in defbolt"}, {"body": "If the seq is partially consumed it shouldn't return the count of the full list of fields. See ASeq.count()", "user": {"avatar_url": "https://secure.gravatar.com/avatar/2147c68b7ec5d32424a717c801525d56?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"}, "outcome": "merge", "id": "https://api.github.com/repos/nathanmarz/storm/pulls/147", "title": "The count of a seq is 1 + the number of remaining seqs through next()"}, {"body": "A minor convenience...", "user": {"avatar_url": "https://secure.gravatar.com/avatar/86f15f999f6d493bbe34f517a9cc2816?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"}, "outcome": "reject", "id": "https://api.github.com/repos/nathanmarz/storm/pulls/143", "title": "add `:debug true` shortcut for components in clojure dsl"}, {"body": "right now symlinking the bin onto PATH doesn't work properly, because abspath doesn't follow the symlink.", "user": {"avatar_url": "https://secure.gravatar.com/avatar/592c29d1042d5f0da1524ff17bbe25da?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"}, "outcome": "merge", "id": "https://api.github.com/repos/nathanmarz/storm/pulls/142", "title": "Allow symlinking of the storm binary"}, {"body": "The _readTaskIds/_readTuple trampoline/queue stuff in the Python implementation seems funny.. not sure about that \u2014 I am not fluent in Python. Still working on a node.js version where the lack of synchronization around task ids after emits is no problem.<br/><br/>I haven't yet tested reliable spouts. Will do that sometime soon.<br/><br/>I made a small change to the protocol, expecting and \"end\\n\" after the pid as well, to be consistent. I could easily add back in the special case.", "user": {"avatar_url": "https://secure.gravatar.com/avatar/86f15f999f6d493bbe34f517a9cc2816?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"}, "outcome": "merge", "id": "https://api.github.com/repos/nathanmarz/storm/pulls/138", "title": "ShellSpout, async ShellBolt, python implementation"}, {"body": "this request is for issue #89 .<br/>Add checkbox to hide components that prefixed with \"__\".<br/>But I don't know where the checkbox should be placed.<br/>Please try it.", "user": {"avatar_url": "https://secure.gravatar.com/avatar/5de063e47d0da381a3848e761a059a7a?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"}, "outcome": "reject", "id": "https://api.github.com/repos/nathanmarz/storm/pulls/136", "title": "#89 Show/hide implicit parts of topology in Storm UI"}, {"body": "pull request for this issue: https://github.com/nathanmarz/storm/issues/104", "user": {"avatar_url": "https://secure.gravatar.com/avatar/2e4b76a1b6ac1809a564333068ba1760?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"}, "outcome": "reject", "id": "https://api.github.com/repos/nathanmarz/storm/pulls/135", "title": "pull request for this issue: https://github.com/nathanmarz/storm/issues/104"}, {"body": "Only commit 1f63ad98 is needed. I am sorry that I can not produce a pull request just contains the commit.", "user": {"avatar_url": "https://secure.gravatar.com/avatar/4dc8343c41c91296bf91327486679238?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"}, "outcome": "reject", "id": "https://api.github.com/repos/nathanmarz/storm/pulls/133", "title": "fix for issuse 122"}, {"body": "This patch fix issue #122<br/>Add URLEncoder for ui.core to use space character in spout/bolt id.<br/>", "user": {"avatar_url": "https://secure.gravatar.com/avatar/5de063e47d0da381a3848e761a059a7a?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"}, "outcome": "reject", "id": "https://api.github.com/repos/nathanmarz/storm/pulls/128", "title": "URLEncoder for ui.core (issue 122 )"}, {"body": "This is a small change DRPCClient.java to add a timeout option to the underlying TSocket.", "user": {"avatar_url": "https://secure.gravatar.com/avatar/dda7171e6ae0e26e7e0d8d7ddf2a56cc?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"}, "outcome": "reject", "id": "https://api.github.com/repos/nathanmarz/storm/pulls/127", "title": "Add a timeout option to DRPCClient"}, {"body": "it can be used like this:<br/><br/>./bin/storm -c nimbus.host=XXX -c nimbus.thrift.port=6627<br/><br/>all the simple config values can be overriden except for the complex types like zk addresses, which is an array.<br/><br/>", "user": {"avatar_url": "https://secure.gravatar.com/avatar/93bdbcfba6143e54a614bc20b7c16d4f?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"}, "outcome": "merge", "id": "https://api.github.com/repos/nathanmarz/storm/pulls/125", "title": "push request for issue: 95 "}, {"body": "This patch should fix issue #119", "user": {"avatar_url": "https://secure.gravatar.com/avatar/c6826a52ca5c09a29445dd98416edea7?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"}, "outcome": "reject", "id": "https://api.github.com/repos/nathanmarz/storm/pulls/123", "title": "Fix string encoding in ShellBolt protocol (send UTF-8)."}, {"body": "Use the storm.home env property to make the logs path absolute<br/><br/>With the default configuration , if start the storm not in the storm home folder, the logs will be written into the relative path of the working directory, which is hard to trace.<br/><br/>", "user": {"avatar_url": "https://secure.gravatar.com/avatar/93bdbcfba6143e54a614bc20b7c16d4f?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"}, "outcome": "merge", "id": "https://api.github.com/repos/nathanmarz/storm/pulls/121", "title": "add storm home for default log4j configuration to use absolute path for logs folder"}, {"body": "Updated ``bin/storm``:<br/><br/>* usage message update<br/>* help message per commands (e.g. ``bin/storm help ui``) <br/>* simple error handling<br/>* fix some Python misc<br/>", "user": {"avatar_url": "https://secure.gravatar.com/avatar/b9b7a5ffa24e2af6f877a7950461ba0f?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"}, "outcome": "merge", "id": "https://api.github.com/repos/nathanmarz/storm/pulls/116", "title": "Help message per commands for Storm client"}, {"body": "...se .project and .classpath files by running lein eclipse.<br/><br/>I'm used to working in eclipse for projects (as I guess are quite a few Java developers) so it would be great if the lein-eclipse plugin could be added to make support for that easier.<br/><br/>Thanks,", "user": {"avatar_url": "https://secure.gravatar.com/avatar/209774f1ccb34b954bd58efc00f07935?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"}, "outcome": "merge", "id": "https://api.github.com/repos/nathanmarz/storm/pulls/114", "title": "Added the lein eclipse plugin to the project.clj. You can generate eclip..."}, {"body": "...112<br/><br/>Found this bug whilst I was testing out storm drpc for some projects I'm working on. This should make the error logged more clear if users don't add servers to the drpc list before they run a drpc topology.", "user": {"avatar_url": "https://secure.gravatar.com/avatar/209774f1ccb34b954bd58efc00f07935?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"}, "outcome": "merge", "id": "https://api.github.com/repos/nathanmarz/storm/pulls/113", "title": "Added check for null servers list on the setup of the DRPCSpout. Fixes #..."}, {"body": "* Changed supervisor() to use supervisor.childopts (looks like just a copy/paste/nochange)<br/>* Created a 'storm help' command that re-uses the existing print_usage<br/>* Made unknown commands default to 'storm help' instead of stacktracing<br/>* Added ui.childopts to ui(), to include JVM args to ui processes<br/>* Added default -Xmx768m to ui.childopts entry in defaults.yaml, based on what had been in bin/storm", "user": {"avatar_url": "https://secure.gravatar.com/avatar/971445e43a398fe51c1be4844d69044a?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"}, "outcome": "merge", "id": "https://api.github.com/repos/nathanmarz/storm/pulls/105", "title": "Update childopts for supervisor; add childopts for ui; bin/storm polish"}, {"body": "We ran into a problem on a Windows system when Storm is deleting files from the tmp directory. We should be using the canonical path from the File object. This is especially important on Windows systems in my experience. Here is the exception it was throwing.<br/><br/>java.io.IOException: Unable to delete file: C:\\Users\\KALYOS~1\\AppData\\Local\\Temp\\8cfaaa2d-a34f-4a9f-a30a-ef74a0721260\\version-2\\log.1<br/>at org.apache.commons.io.FileUtils.forceDelete(FileUtils.java:1390) t org.apache.commons.io.FileUtils.cleanDirectory(FileUtils.java:1044)<br/>at org.apache.commons.io.FileUtils.deleteDirectory(FileUtils.java:977)<br/>at org.apache.commons.io.FileUtils.forceDelete(FileUtils.java:1381)<br/>at org.apache.commons.io.FileUtils.cleanDirectory(FileUtils.java:1044)<br/>at org.apache.commons.io.FileUtils.deleteDirectory(FileUtils.java:977)<br/>at org.apache.commons.io.FileUtils.forceDelete(FileUtils.java:1381)<br/>at backtype.storm.util$rmr.invoke(util.clj:277)<br/>at backtype.storm.testing$kill_local_storm_cluster.invoke(testing.clj:156)<br/>at backtype.storm.LocalCluster$_shutdown.invoke(LocalCluster.clj:21)<br/>at backtype.storm.LocalCluster.shutdown(Unknown Source)<br/>at com.idexx.data.etl.storm.DataServicesETLTopology.shutdownLocalTopology(DataServicesETLTopology.java:167)<br/>at integration.com.idexx.data.etl.AbstractDataEltHsqldbTopologyTests.afterSuite(AbstractDataEltHsqldbTopologyTests.java:56)<br/><br/>This doesn't completely fix the problem we're having, but eliminates a potential problem. Now the problem appears to be that there may be another process or thread holding a lock on that file.", "user": {"avatar_url": "https://secure.gravatar.com/avatar/eb3640e66e92fe6a3315007455d645d7?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"}, "outcome": "reject", "id": "https://api.github.com/repos/nathanmarz/storm/pulls/102", "title": "File delete problem on Windows"}, {"body": "This should be a fix for issue #82. It checks the url that the supervisor gets from the getResource call for \"jar:\" on the front to determine if it's inside a jar file. It calls the Java function Utils.copyResourcesFromJar() which extracts the files from the jar and copies them to the given directory.<br/><br/>I didn't do extensive testing, but it worked here for me on a couple of different situations.", "user": {"avatar_url": "https://secure.gravatar.com/avatar/eb3640e66e92fe6a3315007455d645d7?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"}, "outcome": "reject", "id": "https://api.github.com/repos/nathanmarz/storm/pulls/101", "title": "Fix for Issue #82 (Storm should extract resources dir in local mode when appropriate)"}, {"body": "This patch adds two new options for zookeeper:<br/><br/> storm.zookeeper.retry.times<br/> storm.zookeeper.retry.interval <br/><br/>They define zookeeper clients retry policy.Please check the difference.", "user": {"avatar_url": "https://secure.gravatar.com/avatar/0a1fc541b9d8681ee21af5591766297d?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"}, "outcome": "merge", "id": "https://api.github.com/repos/nathanmarz/storm/pulls/100", "title": "Adds storm.zookeeper.retry.times and storm.zookeeper.retry.interval "}, {"body": "These commits address #25 and add some improved semantics to the Clojure DSL.<br/><br/>Stream/component/task info on a tuple is now accessible from the meta data.<br/><br/>Tuples now implement ILookup, IPersistentMap, Indexed, Seqable, IFn, and Map so that things like (nth tuple 1), (tuple :foo-field), (:foo-field tuple), etc. work.<br/><br/>Added an IndifferentAccessMap to allow tuple field names to be treated as either keywords or strings.<br/><br/>Tuples can now be \"modified\" like clojure maps with assoc/dissoc. This is useful for building up values to emit. This is kind of a naive implementation, but I think it works pretty well for the task at hand.<br/><br/>From the Clojure side, emit-bolt!/emit-bolt-direct! can now take its values as either a list or a map. If it is provided a map, then it will find the output fields for the stream and construct the values list from the map based on that (currently null for any fields not present in the map, which I think is sensible). We've been using a pattern like this on our project at NabeWise and I find it to be very powerful/convenient.<br/><br/>I apologize in advance that my java-fu is somewhat weak, so let me know if I need to fix any style or other issues.", "user": {"avatar_url": "https://secure.gravatar.com/avatar/d3ab72cca9386f19daf37d57e4a0a9d2?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"}, "outcome": "merge", "id": "https://api.github.com/repos/nathanmarz/storm/pulls/94", "title": "Clojure tuples"}, {"body": "This is meant to close issue #34 (Nimbus should clean inbox)<br/><br/>Adds two new config variables to control how often the cleaner job<br/>runs and how old a jar needs to be before it will be deleted.", "user": {"avatar_url": "https://secure.gravatar.com/avatar/529ae28793695d549f9aa034a7e64d2f?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"}, "outcome": "merge", "id": "https://api.github.com/repos/nathanmarz/storm/pulls/93", "title": "Delete nimbus inbox jars with a simple scheduled delete job"}, {"body": "Fixed issue 68: use curator to handle zookeeper.", "user": {"avatar_url": "https://secure.gravatar.com/avatar/0a1fc541b9d8681ee21af5591766297d?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"}, "outcome": "reject", "id": "https://api.github.com/repos/nathanmarz/storm/pulls/81", "title": "Fixed issue 68"}, {"body": "This time...with less noise. Sorry for all the confusion!", "user": {"avatar_url": "https://secure.gravatar.com/avatar/57abd59dd9f19b6f9cbd6a7ca7319896?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"}, "outcome": "reject", "id": "https://api.github.com/repos/nathanmarz/storm/pulls/80", "title": "Shell Spout & Python Lib Spout"}, {"body": "Changed the ShellBolt to use a String[] as its arg so this can be passed to the ProcessBuilder directly. This allows you to pass command line param to your ShellBolt.<br/><br/>", "user": {"avatar_url": "https://secure.gravatar.com/avatar/881091b27cc75786cf4dc106785399eb?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"}, "outcome": "reject", "id": "https://api.github.com/repos/nathanmarz/storm/pulls/67", "title": "Changed the ShellBolt to use a String[] as its arg so this can be passed to the ProcessBuilder directly..."}, {"body": "Nathan, I used the multi-lang protocol wiki page, and the ShellBolt class to build out this class to implement ShellSpouts.<br/><br/>Let me know if there's something major missing, or it's missing something I can implement.<br/><br/>Cheers,<br/><br/>Jim", "user": {"avatar_url": "https://secure.gravatar.com/avatar/57abd59dd9f19b6f9cbd6a7ca7319896?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"}, "outcome": "reject", "id": "https://api.github.com/repos/nathanmarz/storm/pulls/56", "title": "Implemented the ShellSpout class to allow us to write multi-lang ShellSpouts"}, {"body": "I took a stab at implementing this, and it seems to work for me. I just changed 1 line and added a utility function.", "user": {"avatar_url": "https://secure.gravatar.com/avatar/38a2400e9f8848c0729cefcbf8ea0ec7?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"}, "outcome": "merge", "id": "https://api.github.com/repos/nathanmarz/storm/pulls/50", "title": "Patch for Issue #2 (pick available port for Zookeeper in Local Mode)"}, {"body": "This pull request adds a `lettuple` macro which provides a convenient way for unpacking tuples in bolts. It saves you from having to manage indices, and allows you to conveniently specify per-value transformations.<br/><br/>Example:<br/><br/><pre><br/>(lettuple tuple [i Integer h (String read-json)]<br/> (prn i)<br/> (prn h))<br/></pre><br/><br/>expands to:<br/><br/><pre><br/>(let [tuple79 tuple<br/> i (. tuple79 getInteger 0)<br/> h (-> (. tuple79 getString 1) read-json)]<br/> (prn i)<br/> (prn h))<br/></pre><br/><br/>Note that `tuple79` is a symbol generated by the compiler that will be guaranteed to be unique. The first binding of `tuple79` to `tuple` ensures that `tuple` is only evaluated once.<br/><br/>The syntax is:<br/><br/><pre><br/>(lettuple tuple [bindings*] exprs*)<br/></pre><br/><br/>`binding`s are of the form `var-symbol type-expr`.<br/><br/>If `type-expr` is not a sequence, it is combined with `\"get\"` to make a method name, e.g. `Integer` becomes `getInteger`, `DoesntExist` becomes `getDoesntExist`. This method is then invoked on `tuple` with the index of the binding.<br/><br/>If `type-expr` is a sequence, the first element of the sequence is treated as above, and the remaining arguments are threaded with `->`. See the example above.", "user": {"avatar_url": "https://secure.gravatar.com/avatar/223139cd460f00528796f94dc2415633?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"}, "outcome": "reject", "id": "https://api.github.com/repos/nathanmarz/storm/pulls/36", "title": "Add lettuple macro"}, {"body": "I attempted a small fix to this issue, with my addition the only difference is that the process doesn't halt instead it just fails (which works OK for me because i always shutdown a local-topology after some time, but i need to further patch this to shutdown automatically when an error is thrown).<br/><br/>Can you please provide assistance on how to shutdown everything from within task or within worker/mk-worker so i can pass it down to mk-tasks? I can retry the patch again.<br/><br/>I saw kill-local-storm-cluster in testing.clj but i don't seem to have for example a reference to nimbus.<br/>", "user": {"avatar_url": "https://secure.gravatar.com/avatar/4aac499fafdb5e019d22ed857e731d2f?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"}, "outcome": "reject", "id": "https://api.github.com/repos/nathanmarz/storm/pulls/29", "title": "When developing in local mode when a task fails we don't want the whole process to halt"}, {"body": "was having some trouble getting \"production\" cluster running locally. I was getting an exception in NimbusClient.java. Looks like the YAML parser was giving back an ArrayList and we were casting it to a String. This fixes the issue, but given no one else has run into this I wonder if its because I was doing something else wrong.<br/><br/><br/><br/>", "user": {"avatar_url": "https://secure.gravatar.com/avatar/1c4dcea8dfecc86a2727bc9e6cc0a582?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"}, "outcome": "reject", "id": "https://api.github.com/repos/nathanmarz/storm/pulls/26", "title": "fixed possible client config parsing issue"}, {"body": "Upgraded to thrift version 0.6.1 to enable compatibility with latest version of Cassandra.", "user": {"avatar_url": "https://secure.gravatar.com/avatar/423abccbed514c8464e12ae1479003a9?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"}, "outcome": "reject", "id": "https://api.github.com/repos/nathanmarz/storm/pulls/24", "title": "Upgrade Thrift"}, {"body": "This small patch adds a __repr__ method to the Tuple class in the Python library. It's very helpful for debugging bolts :-)<br/><br/>Regards,<br/>Tom", "user": {"avatar_url": "https://secure.gravatar.com/avatar/223139cd460f00528796f94dc2415633?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"}, "outcome": "merge", "id": "https://api.github.com/repos/nathanmarz/storm/pulls/20", "title": "Add Tuple.__repr__ to Python library"}, {"body": "I'm trying to register a custom serializer using `config.addSerialization(33, SimpleJSONSerializer.class)`, but I can't get it to compile. I get: \"The method addSerialization(int, Class<ISerialization>) in the type Config is not applicable for the arguments (int, Class<SimpleJSONSerializer>)\"<br/><br/>My memory of Java generics is pretty rusty, but I think it's because the type `Class<ISerialization>` is too strict, and the only value I can pass to it is `ISerialization.class` (which compiles, but obviously doesn't work). I believe the intended parameter type is actually `Class<? extends ISerialization>`, which can be passed any `Foo.class` so long as `Foo implements ISerialization`.<br/><br/>If I fall back to<br/><br/>```java<br/>config.put(Config.TOPOLOGY_SERIALIZATIONS, Collections.singletonMap(33, \"uk.co.samstokes.storm.serializer.SimpleJSONSerializer\"));<br/>```<br/><br/>then it works fine, so my serialiser is definitely working.", "user": {"avatar_url": "https://secure.gravatar.com/avatar/56cd5f806a8cebda6c8d1a33799724df?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"}, "outcome": "merge", "id": "https://api.github.com/repos/nathanmarz/storm/pulls/9", "title": "Config.addSerialization() parameter type is too strict?"}, {"body": "by removing dependencies on clojure.contrib material", "user": {"avatar_url": "https://secure.gravatar.com/avatar/2fcc875f98607b3007909fe4be99160d?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"}, "outcome": "reject", "id": "https://api.github.com/repos/nathanmarz/storm/pulls/1", "title": "make it easier to move to clojure 1.3"}]