One other thing to note with the removal of Sessions is that there will no longer be any ability to send Groovy scripts that depend on one another.
For example: "x = 1 + 1" "y = x + 1" won't work anymore because the x variable won't be saved to a Session's bindings. The impact of this change should be reduced because we will also be switching to gremlin-lang by default which never had this capability. This mostly affects users that want to use gremlin-groovy to send remote commands to the server. On Wed, Apr 3, 2024 at 5:01 PM Ken Hu <kenhu...@gmail.com> wrote: > One thing to add to this is that SASL is difficult to support with > HTTP/1.1 so it will likely need to be dropped. This means that only Basic > Auth will be supported with HTTP/1.1. Support for SASL can be added back > when we move to HTTP/2. However, I'm not sure how widely SASL was used. If > there aren't any complaints from users when it is temporarily removed for > HTTP/1.1 then maybe we should just consider dropping support for it > altogether and not adding it back. > > On Mon, Mar 4, 2024 at 3:02 PM Ken Hu <kenhu...@gmail.com> wrote: > >> I believe that I've answered most questions about this and there doesn't >> seem to have been any objections. Therefore, I'm going to assume consensus >> has been reached and that we will move forward with HTTP only in the next >> major release. >> >> As part of the work to move to HTTP, I would like to simplify some other >> parts of the server that I believe aren't being used. This will help to >> simplify some of the options and arguments used in the HTTP API. >> Specifically, I would like to remove support for OpProcessors, Sessions, >> and the UnifiedChannelizer. OpProcessor is an interesting concept to allow >> providers to add and modify server functionality but it doesn't seem like >> it was ever used (other than by the default ones provided). Sessions are >> tied to WebSocket connections and the threaded nature of the current >> Transaction API. However, the Transaction API will get reworked and >> WebSockets is being removed which makes the Session concept obsolete. The >> UnifiedChannelizer, I believe, was supposed to simplify Sessions but since >> sessions don't make much sense anymore, it probably doesn't make sense to >> keep the UnifiedChannelizer around either. >> >> Is anyone aware of any implementations that are actively making use of >> these? If not, I think it makes sense to remove or replace them in the next >> major version as well. >> >> On Thu, Feb 29, 2024 at 12:52 PM Ken Hu <kenhu...@gmail.com> wrote: >> >>> Thanks for the responses so far. >>> >>> I think we're still open to having multiple protocols as long as there >>> is some form of commitment to maintaining it and there is demand for it >>> within the community. This would mean that we could add grpc but someone >>> would have to be willing to step up to maintain it. Also, I view HTTP/1.1 >>> as a starting point for the transition from WebSockets to HTTP. The >>> features you mentioned that would be beneficial are part of HTTP/2 which, I >>> think, is where we probably want to head longer term. >>> >>> From an end user perspective, there should hopefully be little to no >>> change at all. The underlying protocol used to communicate with the server >>> is mostly transparent to them when they use the GLVs. The only real >>> difference is that they will probably have to adjust some of their >>> connection options which is something users have raised issues with before >>> and this would improve that situation. The users that potentially will get >>> affected the most are those that use a third party driver, they may have to >>> continue using 3.x unless those drivers are updated. For providers, this >>> change shouldn't affect them as long as they use the Gremlin Server (which >>> from what I can tell includes most providers). In the end, I believe this >>> is a change that may cause some minor differences for users, but will >>> mostly help with the continued maintenance of the project. >>> >>> On Wed, Feb 28, 2024 at 4:38 PM Josh Perryman <joshperry...@gmail.com> >>> wrote: >>> >>>> I understand the cost/complexity argument. But do we have any sense of >>>> the >>>> value / feature side of things? What's the implementation look like >>>> among >>>> providers? Is it exclusively HTTP or do some implement both, or just >>>> Websockets? From there, what about actual usage among users? Do the >>>> implementers see any preference on that side? >>>> >>>> I think this a reasonable ask, but the way it is presented is heavily >>>> biased toward developer preferences. Do we have any information on the >>>> user >>>> side? >>>> >>>> -Josh >>>> >>>> On Tue, Feb 27, 2024 at 4:29 PM Ken Hu <kenhu...@gmail.com> wrote: >>>> >>>> > Hi All, >>>> > >>>> > I would like to start the discussion of making HTTP the only protocol >>>> that >>>> > Apache TinkerPop supports starting with the next major version. There >>>> are >>>> > several reasons I'm suggesting this. First, we already support both >>>> > WebSockets and HTTP in Gremlin Server which causes a maintenance >>>> burden of >>>> > having to support both. Also, I ran some tests and a streaming >>>> version of >>>> > HTTP using chunked transfer encoding performs just as well as >>>> streaming via >>>> > WebSockets so there won't be a performance loss in terms of latency. >>>> > Second, HTTP is significantly more popular so it will be easier for >>>> other >>>> > third party clients to connect to. Third, this is an opportunity to >>>> rework >>>> > the remote Transaction API which in its current form causes >>>> unnecessary >>>> > complexity in the server. This will also serve as a good opportunity >>>> to >>>> > make the connection options more similar among all the GLVs. >>>> > >>>> > I've experimented with replacing WebSockets with HTTP (both 1.1 and >>>> 2) and >>>> > noticed similar performance in most cases. For HTTP/1.1, there was >>>> some >>>> > slowdown in cases where thousands of queries with few results were >>>> issued >>>> > per second as lots of HTTP connections needed to be opened, but I >>>> feel like >>>> > this isn't a practical use case. My recommendation for now is to go >>>> with >>>> > HTTP/1.1 as it has all the features we need and it has mostly been >>>> > implemented already on the server side. >>>> > >>>> > To ease the transition, I'm suggesting that we maintain WebSockets >>>> for the >>>> > foreseeable future in the 3.x line while the 4.x line is moved to use >>>> HTTP >>>> > exclusively. This will also give more time for us to build out >>>> support for >>>> > transactions over HTTP which is the only missing feature that is >>>> supported >>>> > when using WebSockets. >>>> > >>>> > I'd like to hear any thoughts regarding this. >>>> > >>>> > Thanks, >>>> > Ken >>>> > >>>> >>>