https://github.com/voldemort/voldemort
Revision 88fcf8d0ea507a22e90db74b1c23f82382806e7c authored by Arunachalam Thirupathi on 31 May 2015, 08:51:47 UTC, committed by Arunachalam Thirupathi on 12 June 2015, 23:23:22 UTC
1) If a connection timesout or fails during protocol negotiation,
they are treated as normal errors instead of catastrophic errors.
Connection timeout was a regression from NIO connect fix. Protocol
negotiation timeout is a new change to detect the failed servers
faster.
2) When a node is marked down, the outstanding queued requests are
not failed and let them go through the connection creation cycle.
When there is no outstanding requests they can wait infinitely until
the next request comes up.
3) UnreachableStoreException is sometimes double wrapped. This causes
the catastrophic errors to be not detected accurately. Created an utility
method, when you are not sure if the thrown exception could be
UnreachableStoreException use this method, which handles this case
correctly.
4) In non-blocking connect if the DNS does not resolve the Java throws
UnresolvedAddressException instead of UnknownHostException. Probably an
issue in java. Also UnresolvedAddressException is not derived from IOException
but from IllegalArgumentException which is weird. Fixed the code to handle
this.
5) Tuned the remembered exceptions timeout to twice the connection timeout.
Previously it was hardcoded to 3 seconds, which was too aggressive when the
connection for some use cases where set to more than 5 seconds.

Added unit tests to verify all the above cases.
1 parent d65f7db
History
Tip revision: 88fcf8d0ea507a22e90db74b1c23f82382806e7c authored by Arunachalam Thirupathi on 31 May 2015, 08:51:47 UTC
ConnectionException is not catastrophic
Tip revision: 88fcf8d
File Mode Size
.settings
bin
clients
config
contrib
docs
example
gradle
private-lib
public-lib
src
test
voldemort-contrib
.gitignore -rw-r--r-- 242 bytes
CONTRIBUTORS -rw-r--r-- 659 bytes
LICENSE -rw-r--r-- 11.1 KB
NOTES -rw-r--r-- 2.5 KB
NOTICE -rw-r--r-- 8.1 KB
README.md -rw-r--r-- 4.4 KB
build.gradle -rw-r--r-- 19.8 KB
build.xml -rw-r--r-- 1.7 KB
gradle.properties -rw-r--r-- 1.2 KB
gradlew -rwxr-xr-x 5.0 KB
gradlew.bat -rw-r--r-- 2.3 KB
release_notes.txt -rw-r--r-- 43.0 KB
settings.gradle -rw-r--r-- 149 bytes
tomcat-tasks.properties -rw-r--r-- 420 bytes
web.xml -rw-r--r-- 1.1 KB

README.md

back to top