Hi all, In the past, there have been instances where users have tried to use incompatible versions of the GLV and server. An example would be the change to make by() more consistent in 3.6.0. This breaking change was large in scope and would likely have changed the output of many queries. However, a user may still have attempted to use the 3.5.x driver with the 3.6.0 server, which would likely lead to them complaining about different results.
To prevent this from happening in TinkerPop 4, I'm suggesting that the server should maintain a list of driver versions that it is incompatible with. Note that driver version here just means the version of the language that the client is using, it doesn't need to be a driver/GLV per se. The server should check the User-Agent header in the HTTP request. If the header doesn't exist or is malformed, the server should assume the driver version is the same as the server's version. If the driver version is incompatible, the server should throw a reasonable error such as "Version 3.7.3 is incompatible with server version 4.0.1 due to a change in the V() Step. Please upgrade to at least version 4.0.0". The error message should contain some information about why it's incompatible and what minimum version it needs to be upgraded to in order to make it easier for the user. This was mentioned earlier, but if a user wants to force the server to process the request, they can remove the User-Agent header from the request or modify the version in the header. All first-party GLVs already have this capability. Does anyone have any thoughts on this? Thanks, Ken