Perhaps another useful piece of data to return from Gremlin Server:

https://issues.apache.org/jira/browse/TINKERPOP-1636

On Thu, Mar 1, 2018 at 6:31 PM, Stephen Mallette <spmalle...@gmail.com>
wrote:

> I just came across this:
>
> https://issues.apache.org/jira/browse/TINKERPOP-1494
>
> There's some ideas for what the open source Gremlin Server could return
> there....for example, perhaps we send back the the host that executed the
> script as the metadata for Gremlin Server?
>
> On Wed, Feb 28, 2018 at 5:37 PM, Ashwini Singh <ashws...@microsoft.com.
> invalid> wrote:
>
>>
>> Completely agree on making the change for other drivers too. The plan
>> from our side is to make changes to other drivers as well.  My focus on
>> Gremlin.Net was just for an example . Yes, we should make change to
>> Gremlin Server to write the metadata for testing.
>>
>> I agree to adding this to ResultSet and exposing this as part of every
>> response for all the drivers and follow the same pattern as JAVA.
>>
>> On the gremlin GVL part,  I agree we should support this on traversal for
>> bytecode as well. For now, we do not have support for bytecode but we are
>> actively working on that and need support for metadata there as well.
>> Thanks for bringing this up. Just wanted to understand how we track issues
>> at tinkerpop, Can we spilt the change to support for gremlin request/script
>> first and bytecode/traversal separately? If we prefer to split the change
>> in chunks, but completely fine with one change.
>>
>> Thanks,
>> Ashwini Singh
>> Software Engineer @ Azure Cosmos DB
>>
>> -----Original Message-----
>> From: Stephen Mallette <spmalle...@gmail.com>
>> Sent: Wednesday, February 28, 2018 9:58 AM
>> To: dev@tinkerpop.apache.org
>> Subject: Re: [Discuss] Expose metadata from Gremlin Server to Clients.
>>
>> This newly created issue might be related to this in some way:
>>
>> https://na01.safelinks.protection.outlook.com/?url=https%3A%
>> 2F%2Fissues.apache.org%2Fjira%2Fbrowse%2FTINKERPOP-1906&
>> data=04%7C01%7Cashwsing%40microsoft.com%7C614b32ff7f98
>> 4c66554808d57ed4d22b%7C72f988bf86f141af91ab2d7cd011db47%7C1%
>> 7C0%7C636554374885412678%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4
>> wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwifQ%3D%3D%7C-1&
>> sdata=w7pyg6JF4KMbPdpBg6t%2F8cE%2BflbnCQQdyMUgc6HDrXw%3D&reserved=0
>>
>> On Wed, Feb 28, 2018 at 11:37 AM, Florian Hockmann <
>> f...@florian-hockmann.de>
>> wrote:
>>
>> > I agree that we also should make this metadata available for
>> > traversals since we want to move users away from sending Gremlin
>> > scripts as strings and instead use Bytecode based GLVs.
>> >
>> > Regarding Gremlin.Net: I think that the implementation would be very
>> > similar to how it can be implemented in the Java driver as we tried to
>> > stay close to the Java driver in general. The only difference is
>> > probably that we currently don't have a ResultSet in Gremlin.Net, but
>> > that's only because I didn't see much value in adding that. Metadata
>> > would of course be a good argument to also implement a ResultSet in
>> > Gremlin.Net and then the implementation should be really basically the
>> > same as in the Java driver.
>> >
>> >
>> > Am 28.02.2018 um 16:15 schrieb Stephen Mallette:
>> > > I'm fine with using the last response message as the carrier for
>> > > this metadata on a particular request. I can't really tell if there
>> > > is much
>> > work
>> > > to do on Gremlin Server itself here. It seems like most of the work
>> > > must occur on the various drivers (you mention the .NET api, but all
>> > > of the drivers would need to support this feature). However, I would
>> > > think that
>> > we
>> > > would want Gremlin Server itself to append in some kind metadata
>> > > (maybe query time? something easy....) so that we could write tests
>> > > for the drivers in TinkerPop itself. There is also the question of
>> > > how we would expose this metadata to GLVs which don't see response
>> > > messages at all. A traversal might need some metadata itself so that
>> > > the user could retrieve the server metadata from that. The
>> > > implementation between Java and the
>> > GLVs
>> > > might be different here as the GLV traversal class is typically
>> > > quite lightweight and only used for generating bytecode.
>> > >
>> > > I'm not so sure I like the  SubmitAsynWithHeaders()  but I don't
>> > > think
>> > too
>> > > much about how the .NET driver works. Is there a reason to not
>> > > always return metadata? could it be expensive to do so? If we just
>> > > added an
>> > extra
>> > > method how would remote traversals configure this option? I think we
>> > > need another way. Generally speaking, for Java, I think I would like
>> > > to see
>> > the
>> > > metadata available to the ResultSet somehow which would in turn make
>> > > it pretty easy to get it on to a Traversal instance once that
>> > > facility was made available.....but as to how to enable or disable
>> > > the return of the metadata, i'm not sure how that should work just
>> > > yet - i need to think on that some more.
>> > >
>> > > For committers who work on GLVs, please take a look at this thread
>> > > and offer your thoughts on how this might work in the GLV driver you
>> > > tend to have the most knowledge on. Let's see if we can come to one
>> > > nice unified solution. At that point, we can setup a ticket in JIRA
>> and go from there.
>> > >
>> > > Ashwini, thanks for offering a pull request for this by the way.
>> > > Once we get consensus on how to do this, we'll see if tasks need to
>> > > be divided
>> > and
>> > > how you might contribute.
>> > >
>> > >
>> > >
>> > > On Mon, Feb 26, 2018 at 6:45 PM, Ashwini Singh <
>> > > ashws...@microsoft.com.invalid> wrote:
>> > >
>> > >> Hi Stephen,
>> > >>
>> > >> Thanks for considering the change.
>> > >>
>> > >> We would be more inclined towards the first approach since the
>> > >> having a ping/pong websocket message can be a bit noisy and
>> > >> requires
>> > sophisticated
>> > >> handling on the client driver side.
>> > >>
>> > >> For handling multiple response messages. I would suggest to rely on
>> > >> last message as these are the metadata for request execution.
>> > >> Partial
>> > response
>> > >> is very internal to the client drivers (based on limited
>> > >> understanding
>> > of
>> > >> tinkerpop client drivers :) , correct me if you differ) and can be
>> > exposed
>> > >> separately (if really needed later).
>> > >>
>> > >> For implementation, Let us know if we can chip in there and submit
>> PR.
>> > The
>> > >> high level approach to achieve this is to have corresponding
>> > >> SubmitAsynWithHeaders()  for every SubmitAsync() that returns a
>> > >> encapsulated result with attributes and IReadOnlyCollectio<T>. Let
>> > >> me
>> > know
>> > >> if you see any concerns adding a new API.
>> > >>
>> > >> Thanks a lot,
>> > >> Ashwini Singh
>> > >> Software Engineer @ Azure Cosmos DB
>> > >>
>> > >>
>> > >>
>> > >> -----Original Message-----
>> > >> From: Stephen Mallette <spmalle...@gmail.com>
>> > >> Sent: Friday, February 23, 2018 5:13 PM
>> > >> To: dev@tinkerpop.apache.org
>> > >> Subject: Re: [Discuss] Expose metadata from Gremlin Server to
>> Clients.
>> > >>
>> > >> Adding those kinds of details was the reason we had the
>> > >> ResponseStatus.attributes Map. I can really only speak for the java
>> > driver
>> > >> as I only know that one really well (we might need other TinkerPop
>> > experts
>> > >> to chime in for python, .net and c#).  The java driver doesn't
>> > >> really present ways to get that information easily under usage that
>> > >> doesn't
>> > deal
>> > >> directly with RequestMessage directly (which people typically don't
>> do).
>> > >> Another thing to think about is that since a single request might
>> > >> return multiple ResponseMessage instances you might not want to
>> > >> return that
>> > kind
>> > >> of data on every response - maybe just to be returned on the first
>> > >> (or last
>> > >> message) and then we somehow preserve that information and make it
>> > >> accessible on the result somehow....we sorta have some kinda of
>> > precedent
>> > >> for that with side-effect data generated by bytecode based
>> > >> traversals -
>> > we
>> > >> can probably build in something similar for this sort of thing.
>> > >>
>> > >> I also toyed with the idea of using ping/pong websocket messages to
>> > carry
>> > >> general information about the server to the client. Not sure if any
>> > >> of
>> > the
>> > >> metadata you want to send back would fit in there, but that could
>> > >> be another option.
>> > >>
>> > >> Does any of that sound helpful?
>> > >>
>> > >> On Fri, Feb 23, 2018 at 3:41 PM, Ashwini Singh <
>> > >> ashws...@microsoft.com.invalid> wrote:
>> > >>
>> > >>> Hi All,
>> > >>>
>> > >>> We are working on to expose metadata as part of gremlin to
>> > >>> response to client. The metadata is simply a property bag to
>> > >>> provide special message/hints to the client. But currently client
>> > >>> libraries strip off everything and only return the data to the
>> client.
>> > >>>
>> > >>> Specifically, We want to expose details like Request Charge, Rate
>> > >>> limiting/Retry policy details etc. In the other scenarios in
>> > >>> Cosmos DB we provide these details to the client is through
>> > >>> response headers. We did some investigation around this and one of
>> > >>> the options is expose these is through response attributes.
>> > >>> Gremlin Server can add metadata as part of gremlin response
>> > >>> attributes (For example, set the property bag on
>> > >>> ResponseStatus.Attributes for Gremlin.Net) that can be serialized
>> by the client drivers to the clients.
>> > >>>
>> > >>> We  would like to learn more if there are precedence around this
>> > >>> and if there are any recommended ways to achieve this in Gremlin
>> > >>> protocol and client drivers.
>> > >>>
>> > >>> Thanks a lot,
>> > >>> Ashwini Singh
>> > >>> Software Engineer @ Azure Cosmos DB
>> > >>>
>> > >>>
>> >
>> >
>> >
>>
>
>

Reply via email to