Skip to content

Commit 517fbc9

Browse files
Unregister from gw finspace torQ compatibiity (#633)
* changes required for unregister_from_gw_finspace code * leading whitspace removal * merge with master and ignore check for active servers on adding server results if finspace flag is true * small syntax changes * compatibility additions for new gateway dereg logic * change where setdereg gets called * small changes based on comments * remove outdate comment
1 parent 8f8c165 commit 517fbc9

File tree

3 files changed

+31
-6
lines changed

3 files changed

+31
-6
lines changed

code/common/finspace.q

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,3 +55,12 @@ newrdbup:{[]
5555
.lg.o[`newrdbup;"received signal from next period rdb, setting rdbready to true"];
5656
@[`.finspace;`rdbready;:;1b];
5757
};
58+
59+
deletecluster:{[clustername]
60+
if[not any (10h;-11h)=fType:type clustername; .lg.e[`deletecluster;"clustername must be of type string or symbol: 10h -11h, got ",-3!fType]; :(::)];
61+
if[-11h~fType; clustername:string clustername];
62+
.lg.o[`deletecluster;"Going to delete ",$[""~clustername;"current cluster";"cluster named: ",clustername]];
63+
.aws.delete_kx_cluster[clustername]; // calling this on an empty string deletes self
64+
// TODO ZAN Error trap
65+
// Test this with invalid cluster names and catch to show error messages
66+
};

code/gateway/gatewaylib.q

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,3 +92,7 @@ getserverscross:{[req;att;besteffort]
9292
/- return the parameters which should be queried for
9393
(key s)!distinct each' flip each util[w]`found
9494
}
95+
96+
addserversfromconnectiontable:{
97+
{.gw.addserverattr'[x`w;x`proctype;x`attributes]}[select w,proctype,attributes from .servers.SERVERS where ((proctype in x) or x~`ALL),not w in ((0;0Ni),exec handle from .gw.servers where active)];}
98+

code/processes/gateway.q

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,13 @@ setserverstate:{[serverh;use]
116116
$[use;
117117
update inuse:use,lastquery:.proc.cp[],querycount+1i from `.gw.servers where handle in serverh;
118118
update inuse:use,usage:usage+.proc.cp[] - lastquery from `.gw.servers where handle in serverh]}
119+
setderegserverids:{[serverh]
120+
if[@[value;`.finspace.enabled;0b] and @[value;`.finspace.dereginprog;0b];
121+
svrIDs:exec serverid from .gw.servers where not null handle, handle in serverh;
122+
.finspace.checkremainingqueriesforserver'[svrIDs];
123+
]}
124+
125+
119126

120127
// return a list of available servers
121128
// override this function for different routing algorithms e.g. maybe only send to servers in the same datacentre, country etc.
@@ -193,14 +200,17 @@ deleteresult:{[queryid] .gw.results : (queryid,()) _ .gw.results}
193200

194201
// add a result coming back from a server
195202
addserverresult:{[queryid;results]
196-
serverid:first exec serverid from .gw.servers where active, handle=.z.w;
203+
serverid:$[@[value;`.finspace.enabled;0b];
204+
first exec serverid from .gw.servers where handle=.z.w;
205+
first exec serverid from .gw.servers where active, handle=.z.w];
197206
if[queryid in key .gw.results;
198207
.[`.gw.results;(queryid;1;.gw.results[queryid;1;;0]?serverid;1);:;results];
199208
.[`.gw.results;(queryid;1;.gw.results[queryid;1;;0]?serverid;2);:;1b]
200209
];
201210
setserverstate[.z.w;0b];
202211
runnextquery[];
203-
checkresults[queryid]}
212+
checkresults[queryid];
213+
setderegserverids[.z.w]}
204214
// handle an error coming back from the server
205215
addservererror:{[queryid;error]
206216
// propagate the error to the client
@@ -209,6 +219,7 @@ addservererror:{[queryid;error]
209219
runnextquery[];
210220
// finish the query
211221
finishquery[queryid;1b;0Ni];
222+
setderegserverids[.z.w];
212223
}
213224
// check if all results are in. If so, send the results to the client
214225
checkresults:{[queryid]
@@ -281,6 +292,11 @@ removeserverhandle:{[serverh]
281292

282293
// mark the server as inactive
283294
update handle:0Ni, active:0b, disconnecttime:.proc.cp[] from `.gw.servers where handle=serverh;
295+
// finspace check
296+
if[@[value;`.finspace.enabled;0b] and @[value;`.finspace.dereginprog;0b];
297+
.finspace.deregserverids:.finspace.deregserverids _ serverid;
298+
.finspace.dereginprog:0<count .finspace.deregserverids _ 0N;
299+
];
284300

285301
runnextquery[];
286302
}
@@ -523,10 +539,6 @@ while[0 = count .servers.getservers[`proctype;`discovery;()!();0b;1b];
523539
.servers.startup[];
524540
.servers.retrydiscovery[]]
525541

526-
// add servers from the standard connections table
527-
addserversfromconnectiontable:{
528-
{.gw.addserverattr'[x`w;x`proctype;x`attributes]}[select w,proctype,attributes from .servers.SERVERS where ((proctype in x) or x~`ALL),not w in ((0;0Ni),exec handle from .gw.servers where active)];}
529-
530542
// When new connections come in from the discovery service, try to reconnect
531543
.servers.addprocscustom:{[connectiontab;procs]
532544
// retry connections

0 commit comments

Comments
 (0)