Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[STORM-138]: Pluggable serialization for multilang #84

Merged
merged 22 commits into from
May 19, 2014

Conversation

jsgilmore
Copy link
Contributor

This pull request addresses storm issue STORM-138 (https://issues.apache.org/jira/browse/STORM-138) and makes the Storm multilang JSON protocol plugable. This pull request was originally reviewed and accepted by James Xu.

John Gilmore added 19 commits October 1, 2013 10:59
…ialiser being used. Moved multilang classes to multilang directory.
…d Immission to ShellMsg and BoltMsg respectively. Documented ISerializer interface.
…d Immission to ShellMsg and BoltMsg respectively. Documented ISerializer interface.
@jsgilmore jsgilmore changed the title Pluggable serialization for multilang [STORM-138]: Pluggable serialization for multilang Apr 24, 2014
@d2r
Copy link

d2r commented Apr 24, 2014

Hi @jsgilmore, are there any tests that would help to validate the change?

It is unfortunate the old PR is not accessible. @xumingming, can you comment?

@jsgilmore
Copy link
Contributor Author

Hi @d2r. The pull request is a refactoring of the original multilang protocol. The previous multilang unit tests are still sufficient to test whether the refactoring was successful. No features were added.

@ptgoetz
Copy link
Member

ptgoetz commented Apr 24, 2014

@d2r, here's the original pull request with @xumingming's comments: https://github.com/nathanmarz/storm/pull/697/files

I'll try to review this today as well.

@revans2
Copy link
Contributor

revans2 commented Apr 24, 2014

From a quick pass through the code the core of it looks good. I just have one major concern. The way to select the serialization method appears to be a cluster wide configuration, but seems to be read from the topology configuration. At a minimum the configuration should begin with "topology." but I would really prefer to have it be something that subclasses to ShellSpout and ShellBolt set. I can easily see a topology where some ShellBolts are using JSON, and others are using a custom binary protocol. Having it be topology wide seems too restrictive.

@jsgilmore
Copy link
Contributor Author

We have not seen the need to have different encoding schemes on a bolt level. I can't see why you would want to use JSON at all if a scheme is available that provides better throughput at lower CPU requirements. We moved from JSON to protocol buffers and now all our topologies use that scheme.

It would be helpful to get some more thoughts on this subject and if it is required, I would be happy to change it, but I would prefer to do it as a future pull request. I don't mind changing the configuration option name.

@revans2
Copy link
Contributor

revans2 commented Apr 25, 2014

I agree that a PB impl would be superior to the JSON, but I am thinking about my customers who have legacy shell bolts already. I can see some of them wanting to keep what already works in place and just add new bolts with the new protocol until they find the time to go back and upgrade.

I am fine with having the change be done in a follow up JIRA.

@Xorlev
Copy link

Xorlev commented Apr 30, 2014

At the very least, this should be a topology-specific configuration.

@revans2
Copy link
Contributor

revans2 commented Apr 30, 2014

Topology specific configuration generally just start with "topology." that distinguishes them from other configurations for nimbus, supervisors, or globally.

@jsgilmore
Copy link
Contributor Author

The multilang configuration is now topology specific.

@revans2
Copy link
Contributor

revans2 commented May 6, 2014

The code looks good to me and all of the unit tests pass, I am +1


String stream = (String) msg.get("stream");
if (stream == null)
stream = Utils.DEFAULT_STREAM_ID;
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Tiny nit: Can we put this in a block?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry, but I don't understand what you mean with "block" here? Do you mean functional block {}?

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, that's what I meant. Not a big deal though.

@d2r
Copy link

d2r commented May 14, 2014

Just had some minor questions/comments. Looks good.

@nathanmarz
Copy link
Contributor

+1

@d2r
Copy link

d2r commented May 19, 2014

+1

@asfgit asfgit merged commit bcbd22b into apache:master May 19, 2014
mgiorgio added a commit to mgiorgio/egit-github that referenced this pull request Jun 7, 2014
…ullRequest class. Tests cases were also updated. For PullRequestTest#fetch(), apache/storm/pull/84 pull request was used.
mgiorgio added a commit to mgiorgio/egit-github that referenced this pull request Jun 7, 2014
…ullRequest class. Tests cases were also updated. For PullRequestTest#fetch(), apache/storm/pull/84 pull request was used.
knusbaum pushed a commit to knusbaum/incubator-storm that referenced this pull request Feb 11, 2015
Simplify checking for unreadable config file for jdk7
Parth-Brahmbhatt pushed a commit to Parth-Brahmbhatt/incubator-storm that referenced this pull request Mar 7, 2016
BUG-51669: Allowing users to specify the nimbus thrift server queue s…
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

7 participants