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 >>> > >>> >>