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

Reply via email to