close
Skip to content

Kryo 3.0.3 upgrade#245

Merged
ianoc merged 20 commits into
developfrom
Kryo3Upgrade
Feb 11, 2016
Merged

Kryo 3.0.3 upgrade#245
ianoc merged 20 commits into
developfrom
Kryo3Upgrade

Conversation

@ianoc
Copy link
Copy Markdown
Contributor

@ianoc ianoc commented Nov 16, 2015

Forked from #230

Remove the java version limits, we support from 1.6+ still

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

shouldn't this be:

def forClass[T](t: Class[T])(fn: () => T): ObjectInstantiator[T] =
    new ObjectInstantiator[T] {
       override def newInstance() = {
         try { fn() }

@johnynek
Copy link
Copy Markdown
Contributor

looks good to me.

Ian, what are the issues with using this with summingbird, which hits storm? Have they shaded their kryo?

@ianoc
Copy link
Copy Markdown
Contributor Author

ianoc commented Nov 18, 2015

No, not shaded, at twitter i've talked to the heron folks about it. External storm users are going to need carbonite upgraded iirc.

@johnynek
Copy link
Copy Markdown
Contributor

but will our spark tests fail? I'd really hate to break external users of summingbird.

@ianoc
Copy link
Copy Markdown
Contributor Author

ianoc commented Nov 18, 2015

spark tests? Pretty much every downstream test will fail until fixed for this sort of change. Its pretty much unavoidable though or we can never upgrade kryo :/

Our storm tests in summingbird are the most at risk unit tests to fail that are tricky to fix that I know of. Spark doesn't require kryo usage so until spark upgrades our tests can turn off those paths

@johnynek
Copy link
Copy Markdown
Contributor

yeah, I meant summingbird tests. I guess we have to start moving up the stack.

@steveloughran
Copy link
Copy Markdown

FWIW, here's the documented experience of the hive move HIVE-12175

@ozawa-hi
Copy link
Copy Markdown

ozawa-hi commented Feb 9, 2016

I'm trying to get kyro3 upgraded in upcoming Spark2.0. Is it possible to get this in maven repository so I can update the pom.xml file in Spark? I'm already testing in local env but would like to create a branch at Spark for this.
https://issues.apache.org/jira/browse/SPARK-11416

@johnynek
Copy link
Copy Markdown
Contributor

johnynek commented Feb 9, 2016

@ozawa-hi +1 the time it now to go forward.

public Object deserialize(Object o) throws IOException {
// TODO, we could share these buffers if we see that alloc is bottlenecking
byte[] bytes = new byte[inputStream.readInt()];
byte[] bytes = new byte[(int) Varint.readUnsignedVarLong(inputStream)];
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

is there no int? should we throw here if the long > Int.MaxValue

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Oh, the code is below. Why not unsigned varint?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

I think this flowed out of the kryo api for bytes written returning a long... at the entry point to that i goto an int now, so everything else just ends up being integers

@ozawa-hi
Copy link
Copy Markdown

Spark upgraded their Scala on Master branch to 2.11. Is it possible to change scalaVersion := "2.11.7", in Build.scala?

@ianoc
Copy link
Copy Markdown
Contributor Author

ianoc commented Feb 10, 2016

We publish all these projects for both 2.10 and 2.11, no reason why we would change the default build. Doesn't effect anything but chill itself

@johnynek
Copy link
Copy Markdown
Contributor

https://github.com/apache/storm/blob/master/pom.xml#L231 storm is on 2.21. Not sure what that means. Maybe that this will break summingbird-storm users.

@johnynek
Copy link
Copy Markdown
Contributor

https://issues.apache.org/jira/browse/HIVE-11269?jql=text%20~%20%22kryo%22

what a pain we have without isolated classpaths.

@johnynek
Copy link
Copy Markdown
Contributor

@johnynek
Copy link
Copy Markdown
Contributor

so, one way forward may be:

  1. open issue with storm.
  2. publish chill-kryo2 and chill as the old and new branches of this library.
  3. in summingbird, make the summingbird-storm depend on chill-kryo2?

in any case, I think publishing either a new artifact or a new version is the way to unblock spark.

@johnynek
Copy link
Copy Markdown
Contributor

@ianoc
Copy link
Copy Markdown
Contributor Author

ianoc commented Feb 11, 2016

Storm look down to do the update if we publish a new version based on your JIRA there. Should we just push ahead and do a bump? Scalding won't take it till 0.17 anyway, so we have some runway for storm to update everything else. (Summingbird will need to update to a newer storm at the same time).

Once we merge this call it 0.8.0 or so?

@johnynek
Copy link
Copy Markdown
Contributor

@ianoc sounds good to me.

@ianoc
Copy link
Copy Markdown
Contributor Author

ianoc commented Feb 11, 2016

Ok awesome, sounds like a plan. Any other changes you'd like to this PR pre-merge?

The other active one can be applied to the 0.7.x series and 0.8.x series presuming all tests are good there, so i'll try put it against both.

ianoc added a commit that referenced this pull request Feb 11, 2016
@ianoc ianoc merged commit 339e200 into develop Feb 11, 2016
@ianoc ianoc deleted the Kryo3Upgrade branch February 11, 2016 19:24
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.

5 participants