Quantcast

Java Serialization of Exceptions

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
8 messages Options
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Java Serialization of Exceptions

cberry
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 [hidden email].
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.
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Java Serialization of Exceptions

joergprante@gmail.com
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 <[hidden email]> 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 [hidden email].
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.

--
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 [hidden email].
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.
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Java Serialization of Exceptions

kimchy
Administrator
In reply to this post by cberry
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 [hidden email].
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.
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Java Serialization of Exceptions

cberry
If it happened once, then by definition it will happen again. History repeats itself. ;-)

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 <[hidden email]> 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 [hidden email].
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 [hidden email].
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.
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Java Serialization of Exceptions

kimchy
Administrator
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. ;-)

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 <<a href="javascript:" target="_blank" gdf-obfuscated-mailto="DnB8ZjYJHLIJ" onmousedown="this.href='javascript:';return true;" onclick="this.href='javascript:';return true;">kim...@...> 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 <a href="https://groups.google.com/d/topic/elasticsearch/7bpam7mWjY8/unsubscribe" target="_blank" onmousedown="this.href='https://groups.google.com/d/topic/elasticsearch/7bpam7mWjY8/unsubscribe';return true;" onclick="this.href='https://groups.google.com/d/topic/elasticsearch/7bpam7mWjY8/unsubscribe';return true;">https://groups.google.com/d/topic/elasticsearch/7bpam7mWjY8/unsubscribe.
To unsubscribe from this group and all its topics, send an email to <a href="javascript:" target="_blank" gdf-obfuscated-mailto="DnB8ZjYJHLIJ" onmousedown="this.href='javascript:';return true;" onclick="this.href='javascript:';return true;">elasticsearc...@googlegroups.com.
To view this discussion on the web visit <a href="https://groups.google.com/d/msgid/elasticsearch/6ae5f173-a2b4-435c-8e5d-a43d377e2fb0%40googlegroups.com?utm_medium=email&amp;utm_source=footer" target="_blank" onmousedown="this.href='https://groups.google.com/d/msgid/elasticsearch/6ae5f173-a2b4-435c-8e5d-a43d377e2fb0%40googlegroups.com?utm_medium\75email\46utm_source\75footer';return true;" onclick="this.href='https://groups.google.com/d/msgid/elasticsearch/6ae5f173-a2b4-435c-8e5d-a43d377e2fb0%40googlegroups.com?utm_medium\75email\46utm_source\75footer';return true;">https://groups.google.com/d/msgid/elasticsearch/6ae5f173-a2b4-435c-8e5d-a43d377e2fb0%40googlegroups.com.
For more options, visit <a href="https://groups.google.com/d/optout" target="_blank" onmousedown="this.href='https://groups.google.com/d/optout';return true;" onclick="this.href='https://groups.google.com/d/optout';return true;">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 [hidden email].
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.
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Java Serialization of Exceptions

Matt Weber-2
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 <[hidden email]> 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. ;-)

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 <[hidden email]> 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.

--
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 [hidden email].
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 the Google Groups "elasticsearch" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email].
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.
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Java Serialization of Exceptions

joergprante@gmail.com
In reply to this post by kimchy
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 <[hidden email]> 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. ;-)

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 <[hidden email]> 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.

--
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 [hidden email].
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 the Google Groups "elasticsearch" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email].
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.
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Java Serialization of Exceptions

cberry
In reply to this post by Matt Weber-2
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. ;-)

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

Cheers,
— Chris 
 
On Mar 21, 2014, at 2:47 PM, Matt Weber <[hidden email]> 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 <[hidden email]> 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. ;-)

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 <[hidden email]> 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.


--
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 [hidden email].
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 [hidden email].
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 [hidden email].
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.
Loading...