@@ -44,7 +44,7 @@ public final class NodeValidator {
4444 byte [] sessionToken ;
4545 long sessionExpiration ;
4646 int features ;
47- Version version ;
47+ Version serverVersion ;
4848
4949 /**
5050 * Return first valid node referenced by seed host aliases. In most cases, aliases
@@ -226,7 +226,6 @@ private void validateAddress(Cluster cluster, InetAddress address, String tlsNam
226226 commands .add ("node" );
227227 commands .add ("partition-generation" );
228228 commands .add ("build" );
229- commands .add ("features" );
230229
231230 boolean validateCluster = cluster .validateClusterName ();
232231 if (validateCluster ) {
@@ -262,11 +261,11 @@ private void validateAddress(Cluster cluster, InetAddress address, String tlsNam
262261 validatePartitionGeneration (map );
263262 validateServerBuildVersion (map );
264263
265- boolean sendUserAgent = version .isGreaterOrEqual (Version .SERVER_VERSION_8_1 );
264+ boolean sendUserAgent = serverVersion .isGreaterOrEqual (Version .SERVER_VERSION_8_1 );
266265 if (sendUserAgent ) {
267266 Info .request (conn , "user-agent-set:value=" + getB64userAgent (cluster ));
268267 }
269- setFeatures (map );
268+ setFeatures (serverVersion );
270269
271270 if (validateCluster ) {
272271 validateClusterName (cluster , map );
@@ -308,49 +307,29 @@ private void validatePartitionGeneration(HashMap<String,String> map) {
308307
309308 private void validateServerBuildVersion (HashMap <String ,String > map ) {
310309 String build = map .get ("build" );
311- version = Version .convertStringToVersion (build , name , primaryAddress );
310+ serverVersion = Version .convertStringToVersion (build , name , primaryAddress );
312311 }
313312
314- private void setFeatures (HashMap <String ,String > map ) {
315- try {
316- String featuresString = map .get ("features" );
317- int begin = 0 ;
318- int end = 0 ;
319-
320- while (end < featuresString .length ()) {
321- end = featuresString .indexOf (';' , begin );
322-
323- if (end < 0 ) {
324- end = featuresString .length ();
325- }
326-
327- int len = end - begin ;
328-
329- if (featuresString .regionMatches (begin , "pscans" , 0 , len )) {
330- this .features |= Node .HAS_PARTITION_SCAN ;
331- }
332- else if (featuresString .regionMatches (begin , "query-show" , 0 , len )) {
333- this .features |= Node .HAS_QUERY_SHOW ;
334- }
335- else if (featuresString .regionMatches (begin , "batch-any" , 0 , len )) {
336- this .features |= Node .HAS_BATCH_ANY ;
337- }
338- else if (featuresString .regionMatches (begin , "pquery" , 0 , len )) {
339- this .features |= Node .HAS_PARTITION_QUERY ;
340- }
341- begin = end + 1 ;
313+ private void setFeatures (Version serverVersion ) {
314+ if (serverVersion .isGreaterOrEqual (Version .SERVER_VERSION_PSCAN )) {
315+ this .features |= Node .HAS_PARTITION_SCAN ;
316+ } else {
317+ // This client requires partition scan support. Partition scans were first
318+ // supported in server version 4.9. Do not allow any server node into the
319+ // cluster that is running server version < 4.9.
320+ if ((this .features & Node .HAS_PARTITION_SCAN ) == 0 ) {
321+ throw new AerospikeException ("Node " + this .name + ' ' + this .primaryHost +
322+ " version < 4.9. This client requires server version >= 4.9" );
342323 }
343324 }
344- catch (Throwable e ) {
345- // Unexpected exception. Use defaults.
325+
326+ if (serverVersion .isGreaterOrEqual (Version .SERVER_VERSION_QUERY_SHOW )) {
327+ features |= Node .HAS_QUERY_SHOW ;
346328 }
347329
348- // This client requires partition scan support. Partition scans were first
349- // supported in server version 4.9. Do not allow any server node into the
350- // cluster that is running server version < 4.9.
351- if ((this .features & Node .HAS_PARTITION_SCAN ) == 0 ) {
352- throw new AerospikeException ("Node " + this .name + ' ' + this .primaryHost +
353- " version < 4.9. This client requires server version >= 4.9" );
330+ if (serverVersion .isGreaterOrEqual (Version .SERVER_VERSION_PQUERY_BATCH_ANY )) {
331+ features |= Node .HAS_BATCH_ANY ;
332+ features |= Node .HAS_PARTITION_QUERY ;
354333 }
355334 }
356335
0 commit comments