-
Notifications
You must be signed in to change notification settings - Fork 380
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Changed behavior of retry_count option for mirrors
Now if query attempt to remote fails, it will reselect new mirror according to current ha-strategy, and retry with this new selected host. Earlier selecting of a mirror was only before the query, and in case of fail sphinx could just try to connect again to the same host several times. Test added, documented.
- Loading branch information
klirichek
committed
Jul 22, 2016
1 parent
2afbae7
commit 66ea9fc
Showing
4 changed files
with
160 additions
and
8 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
a:1:{i:0;a:21:{i:0;a:3:{s:8:"sphinxql";s:18:"select * from dist";s:10:"total_rows";i:5;s:4:"rows";a:5:{i:0;a:3:{s:2:"id";s:1:"5";s:3:"idd";s:1:"3";s:6:"aagent";s:1:"2";}i:1;a:3:{s:2:"id";s:1:"6";s:3:"idd";s:2:"12";s:6:"aagent";s:1:"2";}i:2;a:3:{s:2:"id";s:1:"7";s:3:"idd";s:1:"4";s:6:"aagent";s:1:"2";}i:3;a:3:{s:2:"id";s:1:"8";s:3:"idd";s:1:"5";s:6:"aagent";s:1:"2";}i:4;a:3:{s:2:"id";s:1:"9";s:3:"idd";s:2:"13";s:6:"aagent";s:1:"2";}}}i:1;a:3:{s:8:"sphinxql";s:18:"select * from dist";s:10:"total_rows";i:4;s:4:"rows";a:4:{i:0;a:3:{s:2:"id";s:1:"1";s:3:"idd";s:1:"1";s:6:"aagent";s:1:"1";}i:1;a:3:{s:2:"id";s:1:"2";s:3:"idd";s:2:"10";s:6:"aagent";s:1:"1";}i:2;a:3:{s:2:"id";s:1:"3";s:3:"idd";s:1:"2";s:6:"aagent";s:1:"1";}i:3;a:3:{s:2:"id";s:1:"4";s:3:"idd";s:2:"11";s:6:"aagent";s:1:"1";}}}i:2;a:3:{s:8:"sphinxql";s:19:"select * from dist2";s:10:"total_rows";i:5;s:4:"rows";a:5:{i:0;a:3:{s:2:"id";s:1:"5";s:3:"idd";s:1:"3";s:6:"aagent";s:1:"2";}i:1;a:3:{s:2:"id";s:1:"6";s:3:"idd";s:2:"12";s:6:"aagent";s:1:"2";}i:2;a:3:{s:2:"id";s:1:"7";s:3:"idd";s:1:"4";s:6:"aagent";s:1:"2";}i:3;a:3:{s:2:"id";s:1:"8";s:3:"idd";s:1:"5";s:6:"aagent";s:1:"2";}i:4;a:3:{s:2:"id";s:1:"9";s:3:"idd";s:2:"13";s:6:"aagent";s:1:"2";}}}i:3;a:3:{s:8:"sphinxql";s:19:"select * from dist2";s:5:"error";s:102:"index dist2: agent <AGENT1_ADDRESS/>: remote query error: unknown local index 'loc2' in search request";s:5:"errno";i:1064;}i:4;a:3:{s:8:"sphinxql";s:19:"select * from dist3";s:5:"error";s:90:"index dist3: agent 127.0.0.1:65432: connect() failed: errno=111, Operation now in progress";s:5:"errno";i:1064;}i:5;a:3:{s:8:"sphinxql";s:19:"select * from dist3";s:10:"total_rows";i:4;s:4:"rows";a:4:{i:0;a:3:{s:2:"id";s:1:"1";s:3:"idd";s:1:"1";s:6:"aagent";s:1:"1";}i:1;a:3:{s:2:"id";s:1:"2";s:3:"idd";s:2:"10";s:6:"aagent";s:1:"1";}i:2;a:3:{s:2:"id";s:1:"3";s:3:"idd";s:1:"2";s:6:"aagent";s:1:"1";}i:3;a:3:{s:2:"id";s:1:"4";s:3:"idd";s:2:"11";s:6:"aagent";s:1:"1";}}}i:6;a:3:{s:8:"sphinxql";s:19:"select * from dist3";s:10:"total_rows";i:5;s:4:"rows";a:5:{i:0;a:3:{s:2:"id";s:1:"5";s:3:"idd";s:1:"3";s:6:"aagent";s:1:"2";}i:1;a:3:{s:2:"id";s:1:"6";s:3:"idd";s:2:"12";s:6:"aagent";s:1:"2";}i:2;a:3:{s:2:"id";s:1:"7";s:3:"idd";s:1:"4";s:6:"aagent";s:1:"2";}i:3;a:3:{s:2:"id";s:1:"8";s:3:"idd";s:1:"5";s:6:"aagent";s:1:"2";}i:4;a:3:{s:2:"id";s:1:"9";s:3:"idd";s:2:"13";s:6:"aagent";s:1:"2";}}}i:7;a:3:{s:8:"sphinxql";s:19:"select * from dist3";s:5:"error";s:90:"index dist3: agent 127.0.0.1:65432: connect() failed: errno=111, Operation now in progress";s:5:"errno";i:1064;}i:8;a:3:{s:8:"sphinxql";s:19:"select * from dist3";s:5:"error";s:90:"index dist3: agent 127.0.0.1:65432: connect() failed: errno=111, Operation now in progress";s:5:"errno";i:1064;}i:9;a:3:{s:8:"sphinxql";s:19:"select * from dist3";s:10:"total_rows";i:4;s:4:"rows";a:4:{i:0;a:3:{s:2:"id";s:1:"1";s:3:"idd";s:1:"1";s:6:"aagent";s:1:"1";}i:1;a:3:{s:2:"id";s:1:"2";s:3:"idd";s:2:"10";s:6:"aagent";s:1:"1";}i:2;a:3:{s:2:"id";s:1:"3";s:3:"idd";s:1:"2";s:6:"aagent";s:1:"1";}i:3;a:3:{s:2:"id";s:1:"4";s:3:"idd";s:2:"11";s:6:"aagent";s:1:"1";}}}i:10;a:3:{s:8:"sphinxql";s:40:"select * from dist2 OPTION retry_count=2";s:10:"total_rows";i:5;s:4:"rows";a:5:{i:0;a:3:{s:2:"id";s:1:"5";s:3:"idd";s:1:"3";s:6:"aagent";s:1:"2";}i:1;a:3:{s:2:"id";s:1:"6";s:3:"idd";s:2:"12";s:6:"aagent";s:1:"2";}i:2;a:3:{s:2:"id";s:1:"7";s:3:"idd";s:1:"4";s:6:"aagent";s:1:"2";}i:3;a:3:{s:2:"id";s:1:"8";s:3:"idd";s:1:"5";s:6:"aagent";s:1:"2";}i:4;a:3:{s:2:"id";s:1:"9";s:3:"idd";s:2:"13";s:6:"aagent";s:1:"2";}}}i:11;a:3:{s:8:"sphinxql";s:40:"select * from dist2 OPTION retry_count=2";s:5:"error";s:102:"index dist2: agent <AGENT1_ADDRESS/>: remote query error: unknown local index 'loc2' in search request";s:5:"errno";i:1064;}i:12;a:3:{s:8:"sphinxql";s:40:"select * from dist3 OPTION retry_count=3";s:10:"total_rows";i:5;s:4:"rows";a:5:{i:0;a:3:{s:2:"id";s:1:"5";s:3:"idd";s:1:"3";s:6:"aagent";s:1:"2";}i:1;a:3:{s:2:"id";s:1:"6";s:3:"idd";s:2:"12";s:6:"aagent";s:1:"2";}i:2;a:3:{s:2:"id";s:1:"7";s:3:"idd";s:1:"4";s:6:"aagent";s:1:"2";}i:3;a:3:{s:2:"id";s:1:"8";s:3:"idd";s:1:"5";s:6:"aagent";s:1:"2";}i:4;a:3:{s:2:"id";s:1:"9";s:3:"idd";s:2:"13";s:6:"aagent";s:1:"2";}}}i:13;a:3:{s:8:"sphinxql";s:40:"select * from dist3 OPTION retry_count=3";s:10:"total_rows";i:4;s:4:"rows";a:4:{i:0;a:3:{s:2:"id";s:1:"1";s:3:"idd";s:1:"1";s:6:"aagent";s:1:"1";}i:1;a:3:{s:2:"id";s:1:"2";s:3:"idd";s:2:"10";s:6:"aagent";s:1:"1";}i:2;a:3:{s:2:"id";s:1:"3";s:3:"idd";s:1:"2";s:6:"aagent";s:1:"1";}i:3;a:3:{s:2:"id";s:1:"4";s:3:"idd";s:2:"11";s:6:"aagent";s:1:"1";}}}i:14;a:3:{s:8:"sphinxql";s:40:"select * from dist3 OPTION retry_count=3";s:10:"total_rows";i:5;s:4:"rows";a:5:{i:0;a:3:{s:2:"id";s:1:"5";s:3:"idd";s:1:"3";s:6:"aagent";s:1:"2";}i:1;a:3:{s:2:"id";s:1:"6";s:3:"idd";s:2:"12";s:6:"aagent";s:1:"2";}i:2;a:3:{s:2:"id";s:1:"7";s:3:"idd";s:1:"4";s:6:"aagent";s:1:"2";}i:3;a:3:{s:2:"id";s:1:"8";s:3:"idd";s:1:"5";s:6:"aagent";s:1:"2";}i:4;a:3:{s:2:"id";s:1:"9";s:3:"idd";s:2:"13";s:6:"aagent";s:1:"2";}}}i:15;a:3:{s:8:"sphinxql";s:40:"select * from dist3 OPTION retry_count=3";s:10:"total_rows";i:4;s:4:"rows";a:4:{i:0;a:3:{s:2:"id";s:1:"1";s:3:"idd";s:1:"1";s:6:"aagent";s:1:"1";}i:1;a:3:{s:2:"id";s:1:"2";s:3:"idd";s:2:"10";s:6:"aagent";s:1:"1";}i:2;a:3:{s:2:"id";s:1:"3";s:3:"idd";s:1:"2";s:6:"aagent";s:1:"1";}i:3;a:3:{s:2:"id";s:1:"4";s:3:"idd";s:2:"11";s:6:"aagent";s:1:"1";}}}i:16;a:3:{s:8:"sphinxql";s:40:"select * from dist3 OPTION retry_count=3";s:10:"total_rows";i:5;s:4:"rows";a:5:{i:0;a:3:{s:2:"id";s:1:"5";s:3:"idd";s:1:"3";s:6:"aagent";s:1:"2";}i:1;a:3:{s:2:"id";s:1:"6";s:3:"idd";s:2:"12";s:6:"aagent";s:1:"2";}i:2;a:3:{s:2:"id";s:1:"7";s:3:"idd";s:1:"4";s:6:"aagent";s:1:"2";}i:3;a:3:{s:2:"id";s:1:"8";s:3:"idd";s:1:"5";s:6:"aagent";s:1:"2";}i:4;a:3:{s:2:"id";s:1:"9";s:3:"idd";s:2:"13";s:6:"aagent";s:1:"2";}}}i:17;a:3:{s:8:"sphinxql";s:40:"select * from dist3 OPTION retry_count=3";s:10:"total_rows";i:4;s:4:"rows";a:4:{i:0;a:3:{s:2:"id";s:1:"1";s:3:"idd";s:1:"1";s:6:"aagent";s:1:"1";}i:1;a:3:{s:2:"id";s:1:"2";s:3:"idd";s:2:"10";s:6:"aagent";s:1:"1";}i:2;a:3:{s:2:"id";s:1:"3";s:3:"idd";s:1:"2";s:6:"aagent";s:1:"1";}i:3;a:3:{s:2:"id";s:1:"4";s:3:"idd";s:2:"11";s:6:"aagent";s:1:"1";}}}i:18;a:3:{s:8:"sphinxql";s:40:"select * from dist3 OPTION retry_count=1";s:10:"total_rows";i:5;s:4:"rows";a:5:{i:0;a:3:{s:2:"id";s:1:"5";s:3:"idd";s:1:"3";s:6:"aagent";s:1:"2";}i:1;a:3:{s:2:"id";s:1:"6";s:3:"idd";s:2:"12";s:6:"aagent";s:1:"2";}i:2;a:3:{s:2:"id";s:1:"7";s:3:"idd";s:1:"4";s:6:"aagent";s:1:"2";}i:3;a:3:{s:2:"id";s:1:"8";s:3:"idd";s:1:"5";s:6:"aagent";s:1:"2";}i:4;a:3:{s:2:"id";s:1:"9";s:3:"idd";s:2:"13";s:6:"aagent";s:1:"2";}}}i:19;a:3:{s:8:"sphinxql";s:40:"select * from dist3 OPTION retry_count=1";s:5:"error";s:90:"index dist3: agent 127.0.0.1:65432: connect() failed: errno=111, Operation now in progress";s:5:"errno";i:1064;}i:20;a:3:{s:8:"sphinxql";s:40:"select * from dist3 OPTION retry_count=1";s:10:"total_rows";i:4;s:4:"rows";a:4:{i:0;a:3:{s:2:"id";s:1:"1";s:3:"idd";s:1:"1";s:6:"aagent";s:1:"1";}i:1;a:3:{s:2:"id";s:1:"2";s:3:"idd";s:2:"10";s:6:"aagent";s:1:"1";}i:2;a:3:{s:2:"id";s:1:"3";s:3:"idd";s:1:"2";s:6:"aagent";s:1:"1";}i:3;a:3:{s:2:"id";s:1:"4";s:3:"idd";s:2:"11";s:6:"aagent";s:1:"1";}}}}} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,128 @@ | ||
<?xml version="1.0" encoding="utf-8"?> | ||
<test> | ||
|
||
<name>ha syntax and round-robin strategies</name> | ||
|
||
<num_agents>3</num_agents> | ||
|
||
<config> | ||
searchd | ||
{ | ||
<searchd_settings/> | ||
workers = threads | ||
agent_retry_delay = 100 | ||
} | ||
|
||
<agent0> | ||
index dist | ||
{ | ||
type = distributed | ||
agent = <agent1_address/>:loc1|<agent2_address/>:loc2 | ||
ha_strategy = roundrobin | ||
} | ||
index dist2 | ||
{ | ||
type = distributed | ||
agent = <agent1_address/>|<agent2_address/>:loc2 | ||
This comment has been minimized.
Sorry, something went wrong. |
||
ha_strategy = roundrobin | ||
} | ||
index dist3 | ||
{ | ||
type = distributed | ||
agent = 127.0.0.1:65432:loc|127.0.0.1:65432:loc|<agent1_address/>:loc1|<agent2_address/>:loc2 | ||
ha_strategy = roundrobin | ||
} | ||
|
||
</agent0> | ||
|
||
<agent1> | ||
source src_a1 | ||
{ | ||
type = mysql | ||
<sql_settings/> | ||
|
||
sql_query = SELECT id, idd, 1 as aagent, body FROM test_table where id in ( 1,2,3,4 ) | ||
sql_attr_uint = aagent | ||
sql_attr_uint = idd | ||
} | ||
|
||
index loc1 | ||
{ | ||
source = src_a1 | ||
docinfo = extern | ||
path = <data_path/>/a1 | ||
} | ||
</agent1> | ||
|
||
<agent2> | ||
source src_a2 | ||
{ | ||
type = mysql | ||
<sql_settings/> | ||
|
||
sql_query = SELECT id, idd, 2 as aagent, body FROM test_table where id in ( 5,6,7, 8, 9 ) | ||
sql_attr_uint = aagent | ||
sql_attr_uint = idd | ||
} | ||
|
||
index loc2 | ||
{ | ||
source = src_a2 | ||
docinfo = extern | ||
path = <data_path/>/a2 | ||
} | ||
</agent2> | ||
|
||
</config> | ||
|
||
<db_create> | ||
CREATE TABLE `test_table` | ||
( | ||
`id` int(11) NOT NULL default '0', | ||
`idd` int(11) NOT NULL default '0', | ||
`body` varchar(1024) NOT NULL default '' | ||
) | ||
</db_create> | ||
|
||
<db_drop> | ||
DROP TABLE IF EXISTS `test_table` | ||
</db_drop> | ||
|
||
<db_insert> | ||
INSERT INTO `test_table` VALUES | ||
( 1, 1, 'the dog' ), | ||
( 2, 10, 'the cat' ), | ||
( 3, 2, 'the bird' ), | ||
( 4, 11, 'cat eats bird' ), | ||
( 5, 3, 'dog eats cat' ), | ||
( 6, 12, 'bird' ), | ||
( 7, 4, 'the cat' ), | ||
( 8, 5, 'eats' ), | ||
( 9, 13, 'the' ) | ||
</db_insert> | ||
|
||
<sphqueries> | ||
<sphinxql>select * from dist</sphinxql> | ||
<sphinxql>select * from dist</sphinxql> | ||
<sphinxql>select * from dist2</sphinxql> | ||
<sphinxql>select * from dist2</sphinxql> | ||
<sphinxql>select * from dist3</sphinxql> | ||
<sphinxql>select * from dist3</sphinxql> | ||
<sphinxql>select * from dist3</sphinxql> | ||
<sphinxql>select * from dist3</sphinxql> | ||
<sphinxql>select * from dist3</sphinxql> | ||
<sphinxql>select * from dist3</sphinxql> | ||
<sphinxql>select * from dist2 OPTION retry_count=2</sphinxql> | ||
<sphinxql>select * from dist2 OPTION retry_count=2</sphinxql> | ||
<sphinxql>select * from dist3 OPTION retry_count=3</sphinxql> | ||
<sphinxql>select * from dist3 OPTION retry_count=3</sphinxql> | ||
<sphinxql>select * from dist3 OPTION retry_count=3</sphinxql> | ||
<sphinxql>select * from dist3 OPTION retry_count=3</sphinxql> | ||
<sphinxql>select * from dist3 OPTION retry_count=3</sphinxql> | ||
<sphinxql>select * from dist3 OPTION retry_count=3</sphinxql> | ||
<sphinxql>select * from dist3 OPTION retry_count=1</sphinxql> | ||
<sphinxql>select * from dist3 OPTION retry_count=1</sphinxql> | ||
<sphinxql>select * from dist3 OPTION retry_count=1</sphinxql> | ||
</sphqueries> | ||
|
||
</test> |
here agent1 does't have
loc2
index, so it always fails: