Commit Graph

18 Commits

Author SHA1 Message Date
Mayank Dang
37a3c7b835 Merging with upstream, necessary changes, shifting poolConfig as private instance variable from JedisClusterConnectionHandler to JedisClusterInfoCache due to design change in previous commits. 2014-09-11 16:16:08 +05:30
Jungtaek Lim
15ab934945 Re-format source to respect Jedis convention 2014-07-02 23:52:42 +09:00
Jungtaek Lim
94966e6163 Renew slots when MOVED occured during request to Cluster
* It's suggested by http://redis.io/topics/cluster-spec
** antirez/redis-rb-cluster implementation does it, too
* Since Redis 3.0-beta 7 introduces CLUSTER SLOTS, it becomes easier
* FIXME: It's fully synchronized, so it hurts performance (somewhat poor implementation)
** We can try Reader / Writer strategy to make lock waiting make shorter
2014-07-02 23:29:30 +09:00
Mayank Dang
0e25cf65fb Merging upstream 2014-05-29 20:44:40 +05:30
Jungtaek Lim
7255a8cae1 fix "cluster nodes" parse error when slot is in transition
* extract cluster nodes info. parser from JedisClusterConnectionHandler
* unit test for migrating slot included
2014-05-21 08:08:12 +09:00
Mayank Dang
924f27919e Merging upstream 2014-03-26 13:27:47 +05:30
Jungtaek Lim
882d662470 Make Jedis Cluster more likely to antirez's redis-rb-cluster
JedisClusterCommand

* improvements on connection error handling
** if based on slot connection throws connection related exception, retry to random node
** if we retry with random node, but all nodes are unreachable, throw JedisConnectionException without retry
** try to release connection whether connection is broken or not

* bug fix : if asking flag is on, and success this time, set asking flag to off

JedisClusterConnectionHandler

* have flexibility on initializing slots cache
** allow some nodes connection failure - skip
** if current node is success initializing slots cache, skip other nodes
** if current node failed to initialize slots cache, discard all discovered nodes and slots

* set nodes if node does not exist in nodes
** it restricts JedisPool to replace - prevent IllegalStateException : Returned object not currently part of this pool

JedisSlotBasedConnectionGuaranteedConnectionHandler

* getConnection (random connection)
** check all connections by random sequence
** always return valid connection (able to ping-pong)
** throw exception if all connections are invalid

* some refactoring
2014-02-25 18:29:09 +09:00
Mayank Dang
db765227df fix #553 : Overloading JedisCluster constructor to include poolConfig to be used internally for all JedisPool classes 2014-02-19 18:21:56 +05:30
Marcos Nils
e4de67048e Make JedisCluster multihread by improving connection handling 2014-02-18 21:59:53 -03:00
Marcos Nils
a69dd4e242 Add exception handling in caso of unexecpected errors 2014-02-05 00:06:29 -03:00
Marcos Nils
d846149ae1 Fix #526. Node parsing error uppon :0 2014-02-04 22:34:48 -03:00
Jonathan Leibiusky
105ca9f5bb Reformat all files in the project according to java conventions. 2014-01-31 11:24:06 -05:00
Marcos Nils
dd0bbdaf91 Several changes have been added to this commit:
- Add asking to cluster commands
- Make jedis cluster return connection to original pool
- Add tests for MOVED and ASK cluster responses
- Refactor connection handler to recalculate connections based on slots

This commit makes the first usable version of Jedis along with Redis Cluster
2014-01-03 16:42:21 -03:00
Marcos Nils
1b26815799 Add functionality to recalculate slots when receiving MOVED response from node.
Add test to check for ASK responses (implementation missing)
2014-01-02 20:52:17 -03:00
Marcos Nils
b2d22e2060 Add slot based connection which routes requests according to key slot 2013-12-28 00:59:35 -03:00
Marcos Nils
9f767a0848 Add automatic discovery of cluster nodes 2013-12-27 23:09:44 -03:00
Marcos Nils
0bc27ac3a2 Refactor redis cluster connection handler and add JedisAskDataException handling 2013-12-20 15:28:32 -03:00
Marcos Nils
c008070045 Add JedisClusterCommand and updated code to use it respectively 2013-12-10 10:25:41 -03:00