Java Serialization of Exceptions


(Chris Berry-2) #1

Greetings,

Let me say up-front, I am a huge fan and proponent of Elasticsearch. It is
a beautiful tool.

So, that said, it surprises me that Elasticsearch has such a pedestrian
flaw, and serializes it's Exceptions using Java Serialization.
In a big shop it is quite difficult (i.e. next to impossible) to keep all
the ES Clients on the same exact JVM as Elasticsearch, and thus, it is not
uncommon to get TransportSerializationExceptions instead of the actual
underlying problem.
I was really hoping this would be corrected in ES 1.0.X, but no such luck.
(As far as I can tell...)

It seems that this is pretty easily fixed?
Just switch to a JSON representation of the basic Exception and gracefully
(forwards-compatibly) attempt to re-hydrate the actual Exception class.
You'd just have to drop an additional "header" in the stream that tells the
code it is a JSON response and route to the right Handler it accordingly.
If the header is missing, then do things the old way with Java
Serialization??

Are there any plans to fix this? Or perhaps to entertain a Pull Request?
It may seem just an annoyance, but it is actually pretty bad, in that it
keeps Clients from seeing their real issues. Especially in shops where it
is difficult to see the Production logs of Elasticsearch itself.

Thanks much,
-- Chris

--
You received this message because you are subscribed to the Google Groups "elasticsearch" group.
To unsubscribe from this group and stop receiving emails from it, send an email to elasticsearch+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/elasticsearch/1e02778a-a1d0-44b5-8b1f-e8de7de33668%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


(Jörg Prante) #2

I would be very interested in that pull request, too.

Changing every exception transport to a textual JSON error seems a proper
alternative. I haven't tried Jackson ObjectMapper on the exception classes
that are present in ES but it should be possible.

Jörg

On Fri, Mar 21, 2014 at 5:18 PM, Chris Berry chriswberry@gmail.com wrote:

Greetings,

Let me say up-front, I am a huge fan and proponent of Elasticsearch. It is
a beautiful tool.

So, that said, it surprises me that Elasticsearch has such a pedestrian
flaw, and serializes it's Exceptions using Java Serialization.
In a big shop it is quite difficult (i.e. next to impossible) to keep all
the ES Clients on the same exact JVM as Elasticsearch, and thus, it is not
uncommon to get TransportSerializationExceptions instead of the actual
underlying problem.
I was really hoping this would be corrected in ES 1.0.X, but no such luck.
(As far as I can tell...)

It seems that this is pretty easily fixed?
Just switch to a JSON representation of the basic Exception and gracefully
(forwards-compatibly) attempt to re-hydrate the actual Exception class.
You'd just have to drop an additional "header" in the stream that tells
the code it is a JSON response and route to the right Handler it
accordingly. If the header is missing, then do things the old way with Java
Serialization??

Are there any plans to fix this? Or perhaps to entertain a Pull Request?
It may seem just an annoyance, but it is actually pretty bad, in that it
keeps Clients from seeing their real issues. Especially in shops where it
is difficult to see the Production logs of Elasticsearch itself.

Thanks much,
-- Chris

--
You received this message because you are subscribed to the Google Groups
"elasticsearch" group.
To unsubscribe from this group and stop receiving emails from it, send an
email to elasticsearch+unsubscribe@googlegroups.com.
To view this discussion on the web visit
https://groups.google.com/d/msgid/elasticsearch/1e02778a-a1d0-44b5-8b1f-e8de7de33668%40googlegroups.comhttps://groups.google.com/d/msgid/elasticsearch/1e02778a-a1d0-44b5-8b1f-e8de7de33668%40googlegroups.com?utm_medium=email&utm_source=footer
.
For more options, visit https://groups.google.com/d/optout.

--
You received this message because you are subscribed to the Google Groups "elasticsearch" group.
To unsubscribe from this group and stop receiving emails from it, send an email to elasticsearch+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/elasticsearch/CAKdsXoFxv%3D%3DNFxXkLaT7%2BKcuBApO0NZfwN77mi_BS_BhNeG0tA%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.


(Shay Banon) #3

I wonder why you are asking for this feature? If its because Java broke
backward comp. on serialization of InetAddress that we use in our
exceptions, then its a bug in Java serialization, hard for us to do
something about it.

You will loose a lot by trying to serialize exceptions using JSON, and we
prefer not to introduce dependency on ObjectMapper in Jackson, or try and
serialize exceptions using Jackson.

I would be very careful in introducing this just because of a (one time
bug) in Java.

On Friday, March 21, 2014 5:18:38 PM UTC+1, Chris Berry wrote:

Greetings,

Let me say up-front, I am a huge fan and proponent of Elasticsearch. It is
a beautiful tool.

So, that said, it surprises me that Elasticsearch has such a pedestrian
flaw, and serializes it's Exceptions using Java Serialization.
In a big shop it is quite difficult (i.e. next to impossible) to keep all
the ES Clients on the same exact JVM as Elasticsearch, and thus, it is not
uncommon to get TransportSerializationExceptions instead of the actual
underlying problem.
I was really hoping this would be corrected in ES 1.0.X, but no such luck.
(As far as I can tell...)

It seems that this is pretty easily fixed?
Just switch to a JSON representation of the basic Exception and gracefully
(forwards-compatibly) attempt to re-hydrate the actual Exception class.
You'd just have to drop an additional "header" in the stream that tells
the code it is a JSON response and route to the right Handler it
accordingly. If the header is missing, then do things the old way with Java
Serialization??

Are there any plans to fix this? Or perhaps to entertain a Pull Request?
It may seem just an annoyance, but it is actually pretty bad, in that it
keeps Clients from seeing their real issues. Especially in shops where it
is difficult to see the Production logs of Elasticsearch itself.

Thanks much,
-- Chris

--
You received this message because you are subscribed to the Google Groups "elasticsearch" group.
To unsubscribe from this group and stop receiving emails from it, send an email to elasticsearch+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/elasticsearch/6ae5f173-a2b4-435c-8e5d-a43d377e2fb0%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


(Chris Berry-2) #4

If it happened once, then by definition it will happen again. History repeats itself. :wink:

What exactly would you lose?
You are simply trading one rigid serialization scheme for another more lenient one.
Yes, you would have to introduce something like Jackson's Object Mapper, but that seems to be the defacto standard today and with your use of the Shade Plugin it wouldn't really be a burden on the Client anyway.

With all due respect, you may be trivializing the impact of this one time bug.
It is difficult, at best, to inform all the Clients of your Cluster; "Hey, if you want to see what your Exceptions really are, then upgrade your JVM"
Especially in large SOA shops

This just decouples the Client and Server deployments.

Thanks much,
-- Chris

On Mar 21, 2014, at 12:18 PM, kimchy kimchy@gmail.com wrote:

I wonder why you are asking for this feature? If its because Java broke backward comp. on serialization of InetAddress that we use in our exceptions, then its a bug in Java serialization, hard for us to do something about it.

You will loose a lot by trying to serialize exceptions using JSON, and we prefer not to introduce dependency on ObjectMapper in Jackson, or try and serialize exceptions using Jackson.

I would be very careful in introducing this just because of a (one time bug) in Java.

On Friday, March 21, 2014 5:18:38 PM UTC+1, Chris Berry wrote:
Greetings,

Let me say up-front, I am a huge fan and proponent of Elasticsearch. It is a beautiful tool.

So, that said, it surprises me that Elasticsearch has such a pedestrian flaw, and serializes it's Exceptions using Java Serialization.
In a big shop it is quite difficult (i.e. next to impossible) to keep all the ES Clients on the same exact JVM as Elasticsearch, and thus, it is not uncommon to get TransportSerializationExceptions instead of the actual underlying problem.
I was really hoping this would be corrected in ES 1.0.X, but no such luck. (As far as I can tell...)

It seems that this is pretty easily fixed?
Just switch to a JSON representation of the basic Exception and gracefully (forwards-compatibly) attempt to re-hydrate the actual Exception class.
You'd just have to drop an additional "header" in the stream that tells the code it is a JSON response and route to the right Handler it accordingly. If the header is missing, then do things the old way with Java Serialization??

Are there any plans to fix this? Or perhaps to entertain a Pull Request?
It may seem just an annoyance, but it is actually pretty bad, in that it keeps Clients from seeing their real issues. Especially in shops where it is difficult to see the Production logs of Elasticsearch itself.

Thanks much,
-- Chris

--
You received this message because you are subscribed to a topic in the Google Groups "elasticsearch" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/elasticsearch/7bpam7mWjY8/unsubscribe.
To unsubscribe from this group and all its topics, send an email to elasticsearch+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/elasticsearch/6ae5f173-a2b4-435c-8e5d-a43d377e2fb0%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

--
You received this message because you are subscribed to the Google Groups "elasticsearch" group.
To unsubscribe from this group and stop receiving emails from it, send an email to elasticsearch+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/elasticsearch/DF3191F4-8B07-4DCB-920A-AFD35F2FECF1%40gmail.com.
For more options, visit https://groups.google.com/d/optout.


(Shay Banon) #5

Not trivializing the bug at all, god knows I spend close to a week tracing
it down to a JVM backward incompatibility change, but this happened once
over the almost 5 years Elasticsearch existed. To introduce a workaround to
something that happened once, compared to potential bugs in the workaround
(Jackson is great, but what would happen if there was a bug in it for
example) is not a great solution. Obviously, if this happened more often,
then this is something we need to address.

On Friday, March 21, 2014 7:12:02 PM UTC+1, Chris Berry wrote:

If it happened once, then by definition it will happen again. History
repeats itself. :wink:

What exactly would you lose?
You are simply trading one rigid serialization scheme for another more
lenient one.
Yes, you would have to introduce something like Jackson’s Object Mapper,
but that seems to be the defacto standard today and with your use of the
Shade Plugin it wouldn’t really be a burden on the Client anyway.

With all due respect, you may be trivializing the impact of this one time
bug.
It is difficult, at best, to inform all the Clients of your Cluster; “Hey,
if you want to see what your Exceptions really are, then upgrade your JVM”
Especially in large SOA shops

This just decouples the Client and Server deployments.

Thanks much,
— Chris

On Mar 21, 2014, at 12:18 PM, kimchy <kim...@gmail.com <javascript:>>
wrote:

I wonder why you are asking for this feature? If its because Java broke
backward comp. on serialization of InetAddress that we use in our
exceptions, then its a bug in Java serialization, hard for us to do
something about it.

You will loose a lot by trying to serialize exceptions using JSON, and we
prefer not to introduce dependency on ObjectMapper in Jackson, or try and
serialize exceptions using Jackson.

I would be very careful in introducing this just because of a (one time
bug) in Java.

On Friday, March 21, 2014 5:18:38 PM UTC+1, Chris Berry wrote:

Greetings,

Let me say up-front, I am a huge fan and proponent of Elasticsearch. It
is a beautiful tool.

So, that said, it surprises me that Elasticsearch has such a pedestrian
flaw, and serializes it's Exceptions using Java Serialization.
In a big shop it is quite difficult (i.e. next to impossible) to keep all
the ES Clients on the same exact JVM as Elasticsearch, and thus, it is not
uncommon to get TransportSerializationExceptions instead of the actual
underlying problem.
I was really hoping this would be corrected in ES 1.0.X, but no such
luck. (As far as I can tell...)

It seems that this is pretty easily fixed?
Just switch to a JSON representation of the basic Exception and
gracefully (forwards-compatibly) attempt to re-hydrate the actual Exception
class.
You'd just have to drop an additional "header" in the stream that tells
the code it is a JSON response and route to the right Handler it
accordingly. If the header is missing, then do things the old way with Java
Serialization??

Are there any plans to fix this? Or perhaps to entertain a Pull Request?
It may seem just an annoyance, but it is actually pretty bad, in that it
keeps Clients from seeing their real issues. Especially in shops where it
is difficult to see the Production logs of Elasticsearch itself.

Thanks much,
-- Chris

--
You received this message because you are subscribed to a topic in the
Google Groups "elasticsearch" group.
To unsubscribe from this topic, visit
https://groups.google.com/d/topic/elasticsearch/7bpam7mWjY8/unsubscribe.
To unsubscribe from this group and all its topics, send an email to
elasticsearc...@googlegroups.com <javascript:>.
To view this discussion on the web visit
https://groups.google.com/d/msgid/elasticsearch/6ae5f173-a2b4-435c-8e5d-a43d377e2fb0%40googlegroups.comhttps://groups.google.com/d/msgid/elasticsearch/6ae5f173-a2b4-435c-8e5d-a43d377e2fb0%40googlegroups.com?utm_medium=email&utm_source=footer
.
For more options, visit https://groups.google.com/d/optout.

--
You received this message because you are subscribed to the Google Groups "elasticsearch" group.
To unsubscribe from this group and stop receiving emails from it, send an email to elasticsearch+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/elasticsearch/891337f7-230f-4ce2-a2b4-57749f095748%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


(Matt Weber) #6

If this is a concern, why not have your client's use the REST api so they
don't need to worry about matching their java version with the java version
of the search cluster?

Thanks,
Matt Weber

On Fri, Mar 21, 2014 at 12:07 PM, kimchy kimchy@gmail.com wrote:

Not trivializing the bug at all, god knows I spend close to a week tracing
it down to a JVM backward incompatibility change, but this happened once
over the almost 5 years Elasticsearch existed. To introduce a workaround to
something that happened once, compared to potential bugs in the workaround
(Jackson is great, but what would happen if there was a bug in it for
example) is not a great solution. Obviously, if this happened more often,
then this is something we need to address.

On Friday, March 21, 2014 7:12:02 PM UTC+1, Chris Berry wrote:

If it happened once, then by definition it will happen again. History
repeats itself. :wink:

What exactly would you lose?
You are simply trading one rigid serialization scheme for another more
lenient one.
Yes, you would have to introduce something like Jackson’s Object Mapper,
but that seems to be the defacto standard today and with your use of the
Shade Plugin it wouldn’t really be a burden on the Client anyway.

With all due respect, you may be trivializing the impact of this one time
bug.
It is difficult, at best, to inform all the Clients of your Cluster;
“Hey, if you want to see what your Exceptions really are, then upgrade your
JVM”
Especially in large SOA shops

This just decouples the Client and Server deployments.

Thanks much,
— Chris

On Mar 21, 2014, at 12:18 PM, kimchy kim...@gmail.com wrote:

I wonder why you are asking for this feature? If its because Java broke
backward comp. on serialization of InetAddress that we use in our
exceptions, then its a bug in Java serialization, hard for us to do
something about it.

You will loose a lot by trying to serialize exceptions using JSON, and we
prefer not to introduce dependency on ObjectMapper in Jackson, or try and
serialize exceptions using Jackson.

I would be very careful in introducing this just because of a (one time
bug) in Java.

On Friday, March 21, 2014 5:18:38 PM UTC+1, Chris Berry wrote:

Greetings,

Let me say up-front, I am a huge fan and proponent of Elasticsearch. It
is a beautiful tool.

So, that said, it surprises me that Elasticsearch has such a pedestrian
flaw, and serializes it's Exceptions using Java Serialization.
In a big shop it is quite difficult (i.e. next to impossible) to keep
all the ES Clients on the same exact JVM as Elasticsearch, and thus, it is
not uncommon to get TransportSerializationExceptions instead of the
actual underlying problem.
I was really hoping this would be corrected in ES 1.0.X, but no such
luck. (As far as I can tell...)

It seems that this is pretty easily fixed?
Just switch to a JSON representation of the basic Exception and
gracefully (forwards-compatibly) attempt to re-hydrate the actual Exception
class.
You'd just have to drop an additional "header" in the stream that tells
the code it is a JSON response and route to the right Handler it
accordingly. If the header is missing, then do things the old way with Java
Serialization??

Are there any plans to fix this? Or perhaps to entertain a Pull Request?
It may seem just an annoyance, but it is actually pretty bad, in that it
keeps Clients from seeing their real issues. Especially in shops where it
is difficult to see the Production logs of Elasticsearch itself.

Thanks much,
-- Chris

--
You received this message because you are subscribed to a topic in the
Google Groups "elasticsearch" group.
To unsubscribe from this topic, visit https://groups.google.com/d/
topic/elasticsearch/7bpam7mWjY8/unsubscribe.
To unsubscribe from this group and all its topics, send an email to
elasticsearc...@googlegroups.com.

To view this discussion on the web visit https://groups.google.com/d/
msgid/elasticsearch/6ae5f173-a2b4-435c-8e5d-a43d377e2fb0%
40googlegroups.comhttps://groups.google.com/d/msgid/elasticsearch/6ae5f173-a2b4-435c-8e5d-a43d377e2fb0%40googlegroups.com?utm_medium=email&utm_source=footer
.
For more options, visit https://groups.google.com/d/optout.

--
You received this message because you are subscribed to the Google Groups
"elasticsearch" group.
To unsubscribe from this group and stop receiving emails from it, send an
email to elasticsearch+unsubscribe@googlegroups.com.
To view this discussion on the web visit
https://groups.google.com/d/msgid/elasticsearch/891337f7-230f-4ce2-a2b4-57749f095748%40googlegroups.comhttps://groups.google.com/d/msgid/elasticsearch/891337f7-230f-4ce2-a2b4-57749f095748%40googlegroups.com?utm_medium=email&utm_source=footer
.

For more options, visit https://groups.google.com/d/optout.

--
You received this message because you are subscribed to the Google Groups "elasticsearch" group.
To unsubscribe from this group and stop receiving emails from it, send an email to elasticsearch+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/elasticsearch/CAJ3KEoDB%2BVqpKvc3BPbnX2COxpwMi35GmON1bBKD74u9APJ2HQ%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.


(Jörg Prante) #7

What I'm interested in would be a perspective that ES nodes could
communicate with other ES nodes by transparent (readable) data streams
specified by an "ES node protocol", independent of Java serialization. So,
ES nodes in the long run could be implemented in even another language on
the JVM that may not be able to handle the internals of Java serialization
stream protocol. I know this could be implemented by a plugin. But a
standard, transparent node communication protocol in the core would even be
better.

Looking back in Java history there were two visible breaking serialization
changes. First was the jump from 1.1 to 1.2, when 1.1 JVMs couldn't read
objects from 1.2 JVMs over the network any more. And second was for the 1.5
JVMs when enums were added to the serialization. This broke the
communication with 1.4 JVMs. That was all before ES, now we don't have to
care about any JVM <6. And recently there was the invisible, hard to reveal
breakage, the InetAddress class, due to to an undisclosed "security fix",
and yes, it's a bug that can not be fixed from within ES.

Let's cross fingers the next serialization break will not take place so
soon. Maybe when Project Jigsaw has been addressed in Java 9 and ES must
move to Java 9. That feels like a very long way ahead. So I'm fine with
waiting for when the time is right.

Jörg

On Fri, Mar 21, 2014 at 8:07 PM, kimchy kimchy@gmail.com wrote:

Not trivializing the bug at all, god knows I spend close to a week tracing
it down to a JVM backward incompatibility change, but this happened once
over the almost 5 years Elasticsearch existed. To introduce a workaround to
something that happened once, compared to potential bugs in the workaround
(Jackson is great, but what would happen if there was a bug in it for
example) is not a great solution. Obviously, if this happened more often,
then this is something we need to address.

On Friday, March 21, 2014 7:12:02 PM UTC+1, Chris Berry wrote:

If it happened once, then by definition it will happen again. History
repeats itself. :wink:

What exactly would you lose?
You are simply trading one rigid serialization scheme for another more
lenient one.
Yes, you would have to introduce something like Jackson's Object Mapper,
but that seems to be the defacto standard today and with your use of the
Shade Plugin it wouldn't really be a burden on the Client anyway.

With all due respect, you may be trivializing the impact of this one time
bug.
It is difficult, at best, to inform all the Clients of your Cluster;
"Hey, if you want to see what your Exceptions really are, then upgrade your
JVM"
Especially in large SOA shops

This just decouples the Client and Server deployments.

Thanks much,
-- Chris

On Mar 21, 2014, at 12:18 PM, kimchy kim...@gmail.com wrote:

I wonder why you are asking for this feature? If its because Java broke
backward comp. on serialization of InetAddress that we use in our
exceptions, then its a bug in Java serialization, hard for us to do
something about it.

You will loose a lot by trying to serialize exceptions using JSON, and we
prefer not to introduce dependency on ObjectMapper in Jackson, or try and
serialize exceptions using Jackson.

I would be very careful in introducing this just because of a (one time
bug) in Java.

On Friday, March 21, 2014 5:18:38 PM UTC+1, Chris Berry wrote:

Greetings,

Let me say up-front, I am a huge fan and proponent of Elasticsearch. It
is a beautiful tool.

So, that said, it surprises me that Elasticsearch has such a pedestrian
flaw, and serializes it's Exceptions using Java Serialization.
In a big shop it is quite difficult (i.e. next to impossible) to keep
all the ES Clients on the same exact JVM as Elasticsearch, and thus, it is
not uncommon to get TransportSerializationExceptions instead of the
actual underlying problem.
I was really hoping this would be corrected in ES 1.0.X, but no such
luck. (As far as I can tell...)

It seems that this is pretty easily fixed?
Just switch to a JSON representation of the basic Exception and
gracefully (forwards-compatibly) attempt to re-hydrate the actual Exception
class.
You'd just have to drop an additional "header" in the stream that tells
the code it is a JSON response and route to the right Handler it
accordingly. If the header is missing, then do things the old way with Java
Serialization??

Are there any plans to fix this? Or perhaps to entertain a Pull Request?
It may seem just an annoyance, but it is actually pretty bad, in that it
keeps Clients from seeing their real issues. Especially in shops where it
is difficult to see the Production logs of Elasticsearch itself.

Thanks much,
-- Chris

--
You received this message because you are subscribed to a topic in the
Google Groups "elasticsearch" group.
To unsubscribe from this topic, visit https://groups.google.com/d/
topic/elasticsearch/7bpam7mWjY8/unsubscribe.
To unsubscribe from this group and all its topics, send an email to
elasticsearc...@googlegroups.com.

To view this discussion on the web visit https://groups.google.com/d/
msgid/elasticsearch/6ae5f173-a2b4-435c-8e5d-a43d377e2fb0%
40googlegroups.comhttps://groups.google.com/d/msgid/elasticsearch/6ae5f173-a2b4-435c-8e5d-a43d377e2fb0%40googlegroups.com?utm_medium=email&utm_source=footer
.
For more options, visit https://groups.google.com/d/optout.

--
You received this message because you are subscribed to the Google Groups
"elasticsearch" group.
To unsubscribe from this group and stop receiving emails from it, send an
email to elasticsearch+unsubscribe@googlegroups.com.
To view this discussion on the web visit
https://groups.google.com/d/msgid/elasticsearch/891337f7-230f-4ce2-a2b4-57749f095748%40googlegroups.comhttps://groups.google.com/d/msgid/elasticsearch/891337f7-230f-4ce2-a2b4-57749f095748%40googlegroups.com?utm_medium=email&utm_source=footer
.

For more options, visit https://groups.google.com/d/optout.

--
You received this message because you are subscribed to the Google Groups "elasticsearch" group.
To unsubscribe from this group and stop receiving emails from it, send an email to elasticsearch+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/elasticsearch/CAKdsXoEJ%3D%2B2Uc7Kv3GBhC1Wfr3-_aYMB02xy%3DSrCfvszBtA5yQ%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.


(Chris Berry-2) #8

We've built our own Elasticsearch Client that has niceties like; OAuth, the ability to swap Clusters for maintenance, Zookeeper integration, ease of configuration, retries, etc.
Otherwise we'd have a lot of "wheel reinventing" going on.
Plus, the Java Client is pretty nice, after all. :wink:

Thanks for all the input.
(And kimchy, thanks for the brilliant product)

Cheers,
-- Chris

On Mar 21, 2014, at 2:47 PM, Matt Weber matt.weber@gmail.com wrote:

If this is a concern, why not have your client's use the REST api so they don't need to worry about matching their java version with the java version of the search cluster?

Thanks,
Matt Weber

On Fri, Mar 21, 2014 at 12:07 PM, kimchy kimchy@gmail.com wrote:
Not trivializing the bug at all, god knows I spend close to a week tracing it down to a JVM backward incompatibility change, but this happened once over the almost 5 years Elasticsearch existed. To introduce a workaround to something that happened once, compared to potential bugs in the workaround (Jackson is great, but what would happen if there was a bug in it for example) is not a great solution. Obviously, if this happened more often, then this is something we need to address.

On Friday, March 21, 2014 7:12:02 PM UTC+1, Chris Berry wrote:
If it happened once, then by definition it will happen again. History repeats itself. :wink:

What exactly would you lose?
You are simply trading one rigid serialization scheme for another more lenient one.
Yes, you would have to introduce something like Jackson's Object Mapper, but that seems to be the defacto standard today and with your use of the Shade Plugin it wouldn't really be a burden on the Client anyway.

With all due respect, you may be trivializing the impact of this one time bug.
It is difficult, at best, to inform all the Clients of your Cluster; "Hey, if you want to see what your Exceptions really are, then upgrade your JVM"
Especially in large SOA shops

This just decouples the Client and Server deployments.

Thanks much,
-- Chris

On Mar 21, 2014, at 12:18 PM, kimchy kim...@gmail.com wrote:

I wonder why you are asking for this feature? If its because Java broke backward comp. on serialization of InetAddress that we use in our exceptions, then its a bug in Java serialization, hard for us to do something about it.

You will loose a lot by trying to serialize exceptions using JSON, and we prefer not to introduce dependency on ObjectMapper in Jackson, or try and serialize exceptions using Jackson.

I would be very careful in introducing this just because of a (one time bug) in Java.

On Friday, March 21, 2014 5:18:38 PM UTC+1, Chris Berry wrote:
Greetings,

Let me say up-front, I am a huge fan and proponent of Elasticsearch. It is a beautiful tool.

So, that said, it surprises me that Elasticsearch has such a pedestrian flaw, and serializes it's Exceptions using Java Serialization.
In a big shop it is quite difficult (i.e. next to impossible) to keep all the ES Clients on the same exact JVM as Elasticsearch, and thus, it is not uncommon to get TransportSerializationExceptions instead of the actual underlying problem.
I was really hoping this would be corrected in ES 1.0.X, but no such luck. (As far as I can tell...)

It seems that this is pretty easily fixed?
Just switch to a JSON representation of the basic Exception and gracefully (forwards-compatibly) attempt to re-hydrate the actual Exception class.
You'd just have to drop an additional "header" in the stream that tells the code it is a JSON response and route to the right Handler it accordingly. If the header is missing, then do things the old way with Java Serialization??

Are there any plans to fix this? Or perhaps to entertain a Pull Request?
It may seem just an annoyance, but it is actually pretty bad, in that it keeps Clients from seeing their real issues. Especially in shops where it is difficult to see the Production logs of Elasticsearch itself.

Thanks much,
-- Chris

--
You received this message because you are subscribed to a topic in the Google Groups "elasticsearch" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/elasticsearch/7bpam7mWjY8/unsubscribe.
To unsubscribe from this group and all its topics, send an email to elasticsearc...@googlegroups.com.

To view this discussion on the web visit https://groups.google.com/d/msgid/elasticsearch/6ae5f173-a2b4-435c-8e5d-a43d377e2fb0%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

--
You received this message because you are subscribed to the Google Groups "elasticsearch" group.
To unsubscribe from this group and stop receiving emails from it, send an email to elasticsearch+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/elasticsearch/891337f7-230f-4ce2-a2b4-57749f095748%40googlegroups.com.

For more options, visit https://groups.google.com/d/optout.

--
You received this message because you are subscribed to a topic in the Google Groups "elasticsearch" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/elasticsearch/7bpam7mWjY8/unsubscribe.
To unsubscribe from this group and all its topics, send an email to elasticsearch+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/elasticsearch/CAJ3KEoDB%2BVqpKvc3BPbnX2COxpwMi35GmON1bBKD74u9APJ2HQ%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

--
You received this message because you are subscribed to the Google Groups "elasticsearch" group.
To unsubscribe from this group and stop receiving emails from it, send an email to elasticsearch+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/elasticsearch/BBE77D8F-DCCD-491B-A610-B4C568F2224A%40gmail.com.
For more options, visit https://groups.google.com/d/optout.


(system) #9