AW: [DISCUSS] Draft ASF Board Report - July 2023
I already submitted the report as I will be out of office the next two weeks and therefore not able to submit it then. I had to add another small section about the "Project Status" which has been added as a mandatory section since our last report. Here is the final report: -- ## Description: Apache TinkerPop is a graph computing framework for both graph databases (OLTP) and graph analytic systems (OLAP). ## Issues: There are no issues requiring board attention. ## Project Status: Ongoing Activity is relatively high, considering that we are actively working on releases, have daily commits and discussions on the dev list and Discord, as well as regular live events on Twitch. ## Membership Data: Community changes, past quarter: - No new PMC members. Last addition was Yang Xia on 2023-03-15. - Cole Greer was added as committer on 2023-05-30 ## Project Activity: TinkerPop released versions 3.5.6, 3.6.3, and 3.6.4. in the last quarter. These releases were mostly maintenance releases. One noteworthy improvement in 3.5.6 and 3.6.3 is a new multi-architecture Docker image for Gremlin Server which supports ARM64 in addition to AMD64. 3.6.4 was a patch release that fixed a critical bug in the Java driver and a memory leak in the .NET driver. We are closing in on releasing 3.7.0 shortly, a release that includes work from over a year. Major improvements in this release are support for JDK 17 and Groovy 4. This release will also include usability improvements in areas that users often request like support for string manipulations directly in Gremlin and returning vertices and edges with their properties by default instead of only as reference elements which often led to confusion, especially for new users. Together with 3.7.0, we plan to also publish maintenance releases 3.5.6 and 3.6.4. In the wider TinkerPop ecosystem, we learned that Aerospike released the first version of their graph database which supports TinkerPop New graph database.[1] ### Releases: 3.6.4 was released on 2023-05-12. 3.5.6 was released on 2023-05-01. 3.6.3 was released on 2023-05-01. ## Community Health: We again had some live events on Twitch[2] where the recording are available on our YouTube channel[3]: * TinkerPop Wide: ArcadeDB - a Multi-Model Database with Gremlin - Presenter: Luca Garulli - founder of ArcadeDB * Contributorcast: Apache TinkerPop 3.5.6/3.6.3 Post-Release Review - Presenter: Yang Xia, Valentyn Kahamlyk, Cole Greer, and Ken Hu * TinkerPop Wide: Introducing Graph Notebook - Presenter: Kelving Lawrence and Taylor Riggan from AWS, working on Amazon Neptune ## Links [1]: https://aerospike.com/news/press-release/aerospike-delivers-real-time-scalab le-graph-database/ [2]: https://www.twitch.tv/apachetinkerpop [3]: https://www.youtube.com/@apachetinkerpop -Ursprüngliche Nachricht- Von: Florian Hockmann Gesendet: Mittwoch, 5. Juli 2023 14:00 An: dev@tinkerpop.apache.org Betreff: [DISCUSS] Draft ASF Board Report - July 2023 Here is the attached draft of our board report for this quarter - please let me know if there is anything to add or edit. -- ## Description: Apache TinkerPop is a graph computing framework for both graph databases (OLTP) and graph analytic systems (OLAP). ## Issues: There are no issues requiring board attention. ## Membership Data: Community changes, past quarter: - No new PMC members. Last addition was Yang Xia on 2023-03-15. - Cole Greer was added as committer on 2023-05-30 ## Project Activity: TinkerPop released versions 3.5.6, 3.6.3, and 3.6.4. in the last quarter. These releases were mostly maintenance releases. One noteworthy improvement in 3.5.6 and 3.6.3 is a new multi-architecture Docker image for Gremlin Server which supports ARM64 in addition to AMD64. 3.6.4 was a patch release that fixed a critical bug in the Java driver and a memory leak in the .NET driver. We are closing in on releasing 3.7.0 shortly, a release that includes work from over a year. Major improvements in this release are support for JDK 17 and Groovy 4. This release will also include usability improvements in areas that users often request like support for string manipulations directly in Gremlin and returning vertices and edges with their properties by default instead of only as reference elements which often led to confusion, especially for new users. Together with 3.7.0, we plan to also publish maintenance releases 3.5.6 and 3.6.4. In the wider TinkerPop ecosystem, we learned that Aerospike released the first version of their graph database which supports TinkerPop New graph database.[1] ### Releases: 3.6.4 was released on 2023-05-12. 3.5.6 was released on 2023-05-01. 3.6.3 was released on 2023-05-01. ## Community Health: We again had some live events on Twitch[2] where the recording are available o
Re: [DISCUSS] - Proposal for Removing the Need for Closure/Lambda with String/List/Date functions
Hi all, As per last email, I've implemented the string concat() function without "scope" and updated the documentation accordingly. Please feel free to review the PR here https://github.com/apache/tinkerpop/pull/2099. Thanks! Cheers, Yang On Tue, Jun 27, 2023 at 5:43 PM Yang Xia wrote: > Hi all, > > As I'm starting to implement the string concat() function and looking > at the step logic, I feel that the use of "scope" as outlined in the > proposal ( > https://github.com/apache/tinkerpop/blob/master/docs/src/dev/future/proposal-3-remove-closures.asciidoc#concat) > does not quite fit with the existing definition of scope in TinkerPop. > > As concat is a scalar map step, there is very little differentiation > between local and global scopes (unlike number operations with sum, mean, > etc). The only real difference is that the local concat will also accept a > list of strings from incoming traversers, which I don't see as particularly > useful. I believe the best way forward is to remove scopes from concat > entirely and only have a single ScalarMapStep implementation of concat, for > simplicity both in implementation and usage. > > Examples of how this single step would behave: > g.inject(['this', 'is', 'a', 'test']).concat() > ==>illegal argument > > g.inject('this', 'is', 'a', 'test').concat() > ==>this > ==>is > ==>a > ==>test > > g.inject('this', 'is', 'a', 'test').concat(" a", "b") > ==>this ab > ==>is ab > ==>a ab > ==>test ab > > We would also have the flexibility of adding the "scope" option if use > cases or user requests surface in the future, as opposed to trying to > deprecate something that turns out to be not useful. > > Also to note that, by extension, the concept of "scope" may not apply to > string manipulation functions in general, but this may remain to be > discussed as we implement the rest of the functions. > > Any thoughts or suggestions? > > Cheers, > > Yang > > On Thu, Mar 2, 2023 at 4:10 PM David Bechberger > wrote: > >> Thanks to everyone who provided feedback so far. Are there any other >> comments? If not, then I'd like to get this merged in this week, so we >> can >> get started with implementation. >> >> Dave >> >> On Mon, Feb 27, 2023 at 8:31 PM Dave Bechberger >> wrote: >> >> > Thanks to everyone who gave feedback so far. Any other comments on this >> > proposal? >> > >> > I’d like to get this merged in this week so we can get started with >> > implementation. >> > >> > Dave Bechberger >> > >> > >> > On Feb 17, 2023, at 7:18 AM, David Bechberger >> wrote: >> > >> > >> > I was two fast on my reply before as I did have a question for you >> > Valentyn on this statement: >> > >> > >> > *I would propose to consider adding `startWith`, `endWith` andmaybe >> > `contains` string functions.* >> > >> > How would you see these steps being used differently than the current >> > predicates? >> > >> > i.e. P.startingWith()/endingWith()/containing() >> > >> > Dave >> > >> > On Fri, Feb 17, 2023 at 7:12 AM David Bechberger >> > wrote: >> > >> >> Thank you for the fixes Valentyn, I've incorporated that PR. >> >> >> >> The list I proposed here was a minimum number of functions, so we can >> >> definitely see what it would take to include something like a string >> >> formatting function. >> >> >> >> Dave >> >> >> >> On Thu, Feb 16, 2023 at 8:36 AM Valentyn Kahamlyk >> >> wrote: >> >> >> >>> Hi, >> >>> >> >>> Dave, thank you for the detailed proposal! >> >>> >> >>> I made small PR with naming fixes: >> >>> https://github.com/apache/tinkerpop/pull/1973, please take a look. >> >>> >> >>> Also I would propose to consider adding `startWith`, `endWith` and >> >>> maybe `contains` string functions. >> >>> >> >>> Another interesting feature to keep in mind is string formatting. >> >>> for example >> >>> `g.V(1).values('first_name').concat(' >> ').concat(V(1).values('last_name')` >> >>> can be simplified as >> >>> `g.V(1).asString('%s %s', values('first_name'), values('last_name'))` >> >>> >> >>> Regards, Valentyn >> >>> >> >>> >> >>> On Tue, Feb 14, 2023 at 8:47 AM David Bechberger > > >> >>> wrote: >> >>> >> >>> > My apologies, I just saw that I didn't include a link in that email. >> >>> The >> >>> > proposal is here: >> >>> > >> >>> > >> >>> > >> >>> >> https://github.com/apache/tinkerpop/blob/proposal_3/docs/src/dev/future/proposal-3-remove-closures.asciidoc >> >>> > >> >>> > Dave >> >>> > >> >>> > On Tue, Feb 14, 2023 at 7:09 AM David Bechberger < >> d...@bechberger.com> >> >>> > wrote: >> >>> > >> >>> > > Hi All, >> >>> > > >> >>> > > There are a number of useful operations that Gremlin users often >> >>> wish to >> >>> > > perform that are not provided today in the form of traversal >> steps or >> >>> > > predicates (P/TextP). For historical reasons these functions were >> >>> omitted >> >>> > > and users were able to accomplish these tasks by specifying >> anonymous >> >>> > code >> >>> > > blocks or “closures” to perform these tasks. For example, below >> is an >> >>> > > exam
Re: [DISCUSS] mergev() and Cardinality
About done with this change for 3.7.0: https://github.com/apache/tinkerpop/pull/2127 I think we should consider deprecating: property(Cardinality, String, Object, Object...) in favor of the direct use of Cardinality.list(Object) as part of setting the value. so, like: property(list, 'color', 'red') would become: property('color', list(red)) in that way we would have consistency between the property() and mergeV(). Also, I'd also like to consider moving VertexProperty.Cardinality in java to it's own file so that it can just be referenced as Cardinality. If there's no concerns brought up to either of these items here, I'll create the necessary JIRAs for future versions. On Mon, Jun 26, 2023 at 10:58 AM Stephen Mallette wrote: > I pushed a branch here for this change: > > https://github.com/apache/tinkerpop/tree/TINKERPOP-2957 > > it crossed over into property(Map) a bit so i tried to make that > consistent too. i'd really like if the variants could have a syntax more > like java, but java seems to be the only one that allows methods on enums > to work in the fashion of the grammar syntax. anyway, if there are no other > ideas on how to do that, i'll document the various differences for the > variants and issue the PR. > > > > On Fri, Jun 16, 2023 at 2:00 PM Stephen Mallette > wrote: > >> Kelvin opened this one a while back: >> >> https://issues.apache.org/jira/browse/TINKERPOP-2957 >> >> I'd like to suggest this syntax to resolve the issue of Cardinality >> specification with mergeV(): >> >> // current approach to set cardinality >> g.mergeV([firstname:"john",lastname:"handcock"]). >>option(Merge.onMatch,sideEffect(property(single,"firstname","james"), >> >> property(single,"lastname","madison")).constant([:])) >> >> // current syntax will just use default cardinality for the underlying >> graph >> g.mergeV(["firstname":"firstname"]). >>option(Merge.onMatch, [firstname:"james",lastname:"madison"]) >> >> // revised syntax provide cardinality override per property where >> firstname will be explicitly >> // single but lastname will be the default for the underlying graph. the >> `Cardinality.single()` >> // a static method on Cardinality produces a CardinalityValue object >> which will have >> // special meaning to the MergeVStep >> g.mergeV([firstname:"john",lastname:"handcock"]). >>option(Merge.onMatch, [firstname:single("james"),lastname:"madison"]) >> >> // revised syntax to provide cardinality for all properties onMatch where >> both firstname >> // and lastname will be set explicitly to single >> g.mergeV(["firstname":"firstname"]). >>option(Merge.onMatch, [firstname:"james",lastname:"madison"], single) >> >> >> // the above translates to the following so the user won't have to add >> single to each property >> g.mergeV([firstname:"john",lastname:"handcock"]). >>option(Merge.onMatch, >> [firstname:single("james"),lastname:single("madison")]) >> >> >>
[jira] [Commented] (TINKERPOP-2957) mergeV with sideEffect not correctly updating properties
[ https://issues.apache.org/jira/browse/TINKERPOP-2957?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17741121#comment-17741121 ] ASF GitHub Bot commented on TINKERPOP-2957: --- spmallette opened a new pull request, #2127: URL: https://github.com/apache/tinkerpop/pull/2127 https://issues.apache.org/jira/browse/TINKERPOP-2957 Provides a nicer way to allow users to control cardinality of property values when using mergeV() and property(Map). A bit tough to get this in without changes to the serializers but by treating the CardinalityValue as a special form of Bytecode it allowed this change to keep the serializers sacred. VOTE +1 > mergeV with sideEffect not correctly updating properties > > > Key: TINKERPOP-2957 > URL: https://issues.apache.org/jira/browse/TINKERPOP-2957 > Project: TinkerPop > Issue Type: Bug > Components: process >Affects Versions: 3.6.4 >Reporter: Kelvin Lawrence >Assignee: Stephen Mallette >Priority: Blocker > > A Gremlin user let me know about the following issue. If the query below is > run twice, the name parameter on the 4567 vertex does not get updated. The > name on the 1234 vertex does get updated. The query is written this way as > not all databases support single cardinality as the default. The issue has > been reproduced using both TinkerGraph and Amazon Neptune. > {code:java} > g.mergeV([(T.id): 'test-test-1234']). > option(onCreate, [(T.label): 'someLabel', 'name': 'name1']). > option(onMatch, sideEffect(property(single,"name","name2")).constant([:])). > mergeV([(T.id): 'test-test-4567']). > option(onCreate, [(T.label): 'someLabel', 'name': 'name1']). > option(onMatch, > sideEffect(property(single,"name","name2")).constant([:])){code} -- This message was sent by Atlassian Jira (v8.20.10#820010)
[jira] [Commented] (TINKERPOP-2920) SubgraphStrategy failure when property key not present on vertex in by()
[ https://issues.apache.org/jira/browse/TINKERPOP-2920?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17741146#comment-17741146 ] ASF GitHub Bot commented on TINKERPOP-2920: --- spmallette merged PR #2100: URL: https://github.com/apache/tinkerpop/pull/2100 > SubgraphStrategy failure when property key not present on vertex in by() > > > Key: TINKERPOP-2920 > URL: https://issues.apache.org/jira/browse/TINKERPOP-2920 > Project: TinkerPop > Issue Type: Bug > Components: process >Affects Versions: 3.5.5 >Reporter: Stephen Mallette >Priority: Minor > > The following triggers the failure assuming "example" isn't present on a > vertex: > {code} > g.withStrategies(new SubgraphStrategy(vertexProperties: constant(true))). > V().project("example").by("example") > {code} > Note that {{values('example")}} will work on 3.6.2, but not 3.5.5 which > probably has something to do with differences in {{by()}} handling and > {{ProductiveByStrategy}}. > {code} > gremlin> g.withStrategies(new SubgraphStrategy(vertexProperties: > constant(true))). > ..1> withoutStrategies(ProductiveByStrategy). > ..2> V().project("example").by(values("example")) > The provided traverser does not map to a value: > v[1][TinkerVertex]->[PropertiesStep([example],property), > OrStep([[ClassFilterStep(VertexProperty)], > [TraversalFilterStep([ConstantStep(true)])]]), > PropertyValueStep][DefaultGraphTraversal] parent[[TinkerGraphStep(vertex,[]), > ProjectStep([example],[[PropertiesStep([example],property), > OrStep([[ClassFilterStep(VertexProperty)], > [TraversalFilterStep([ConstantStep(true)])]]), PropertyValueStep]])]] > Type ':help' or ':h' for help. > Display stack trace? [yN] > ..1> V().project("example").by("example") > The provided traverser does not map to a value: > v[1][TinkerVertex]->[PropertiesStep([example],property), > TraversalFilterStep([ConstantStep(true)]), > OrStep([[ClassFilterStep(VertexProperty)], > [TraversalFilterStep([ConstantStep(true)])]]), > PropertyValueStep][DefaultTraversal] > parent[[CoalesceStep([value([PropertiesStep([example],property), > TraversalFilterStep([ConstantStep(true)]), > OrStep([[ClassFilterStep(VertexProperty)], > [TraversalFilterStep([ConstantStep(true)])]]), PropertyValueStep]), (null)])]] > Type ':help' or ':h' for help. > Display stack trace? [yN] > {code} -- This message was sent by Atlassian Jira (v8.20.10#820010)
[jira] [Closed] (TINKERPOP-2920) SubgraphStrategy failure when property key not present on vertex in by()
[ https://issues.apache.org/jira/browse/TINKERPOP-2920?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Stephen Mallette closed TINKERPOP-2920. --- Fix Version/s: 3.7.0 3.5.7 3.6.5 Assignee: Stephen Mallette Resolution: Fixed > SubgraphStrategy failure when property key not present on vertex in by() > > > Key: TINKERPOP-2920 > URL: https://issues.apache.org/jira/browse/TINKERPOP-2920 > Project: TinkerPop > Issue Type: Bug > Components: process >Affects Versions: 3.5.5 >Reporter: Stephen Mallette >Assignee: Stephen Mallette >Priority: Minor > Fix For: 3.7.0, 3.5.7, 3.6.5 > > > The following triggers the failure assuming "example" isn't present on a > vertex: > {code} > g.withStrategies(new SubgraphStrategy(vertexProperties: constant(true))). > V().project("example").by("example") > {code} > Note that {{values('example")}} will work on 3.6.2, but not 3.5.5 which > probably has something to do with differences in {{by()}} handling and > {{ProductiveByStrategy}}. > {code} > gremlin> g.withStrategies(new SubgraphStrategy(vertexProperties: > constant(true))). > ..1> withoutStrategies(ProductiveByStrategy). > ..2> V().project("example").by(values("example")) > The provided traverser does not map to a value: > v[1][TinkerVertex]->[PropertiesStep([example],property), > OrStep([[ClassFilterStep(VertexProperty)], > [TraversalFilterStep([ConstantStep(true)])]]), > PropertyValueStep][DefaultGraphTraversal] parent[[TinkerGraphStep(vertex,[]), > ProjectStep([example],[[PropertiesStep([example],property), > OrStep([[ClassFilterStep(VertexProperty)], > [TraversalFilterStep([ConstantStep(true)])]]), PropertyValueStep]])]] > Type ':help' or ':h' for help. > Display stack trace? [yN] > ..1> V().project("example").by("example") > The provided traverser does not map to a value: > v[1][TinkerVertex]->[PropertiesStep([example],property), > TraversalFilterStep([ConstantStep(true)]), > OrStep([[ClassFilterStep(VertexProperty)], > [TraversalFilterStep([ConstantStep(true)])]]), > PropertyValueStep][DefaultTraversal] > parent[[CoalesceStep([value([PropertiesStep([example],property), > TraversalFilterStep([ConstantStep(true)]), > OrStep([[ClassFilterStep(VertexProperty)], > [TraversalFilterStep([ConstantStep(true)])]]), PropertyValueStep]), (null)])]] > Type ':help' or ':h' for help. > Display stack trace? [yN] > {code} -- This message was sent by Atlassian Jira (v8.20.10#820010)
Re: [DISCUSS] Draft ASF Board Report - July 2023
Hi Florian, Thank you for drafting and submitting the report. I just have some small edits for Project Activity and added some clarification to the Project Status sections, and wondering if you would still be able to do a quick update? Here are the sections with the edits added: ## Project Activity: TinkerPop released versions 3.5.6, 3.6.3, and 3.6.4. in the last quarter. These releases were mostly maintenance releases. One noteworthy improvement in 3.5.6 and 3.6.3 is a new multi-architecture Docker image for Gremlin Server which supports ARM64 in addition to AMD64. This release also included important performance improvements for Gremlin Console and TraversalStrategy applications for users and providers. 3.6.4 was a patch release that fixed a critical bug in the Java driver and a memory leak in the .NET driver. We are closing in on releasing 3.7.0 shortly, a release that includes work from over a year. Major improvements in this release are support for JDK 17 and Groovy 4. This release will also include usability improvements in areas that users often request, such as support for string manipulations directly in Gremlin, returning vertices and edges with their properties by default instead of only as reference elements, which often led to confusion, especially for new users. We have also been working on adding transaction support to TinkerGraph, the TinkerPop reference graph implementation. Together with 3.7.0, we plan to also publish maintenance releases 3.5.7 and 3.6.5. In the wider TinkerPop ecosystem, we learned that Aerospike released the first version of their graph database which supports TinkerPop. New graph database.[1] ## Project Status: Ongoing Activity is relatively high, considering we are actively working on releases, have daily commits and development discussions on the dev list. We also have an active user community on Discord where developers and users engage on questions, as well as regular live events on Twitch for knowledge-sharing. Hope you enjoy the time off! Best, Yang On Fri, Jul 7, 2023 at 6:22 AM Florian Hockmann wrote: > I already submitted the report as I will be out of office the next two > weeks > and therefore not able to submit it then. I had to add another small > section > about the "Project Status" which has been added as a mandatory section > since > our last report. Here is the final report: > > -- > ## Description: > Apache TinkerPop is a graph computing framework for both graph databases > (OLTP) and graph analytic systems (OLAP). > > ## Issues: > There are no issues requiring board attention. > > ## Project Status: Ongoing > Activity is relatively high, considering that we are actively working on > releases, have daily commits and discussions on the dev list and Discord, > as > well as regular live events on Twitch. > > ## Membership Data: > Community changes, past quarter: > - No new PMC members. Last addition was Yang Xia on 2023-03-15. > - Cole Greer was added as committer on 2023-05-30 > > ## Project Activity: > TinkerPop released versions 3.5.6, 3.6.3, and 3.6.4. in the last quarter. > These > releases were mostly maintenance releases. One noteworthy improvement in > 3.5.6 > and 3.6.3 is a new multi-architecture Docker image for Gremlin Server which > supports ARM64 in addition to AMD64. > 3.6.4 was a patch release that fixed a critical bug in the Java driver and > a > memory leak in the .NET driver. > > We are closing in on releasing 3.7.0 shortly, a release that includes work > from > over a year. Major improvements in this release are support for JDK 17 and > Groovy 4. This release will also include usability improvements in areas > that > users often request like support for string manipulations directly in > Gremlin > and returning vertices and edges with their properties by default instead > of > only as reference elements which often led to confusion, especially for new > users. > Together with 3.7.0, we plan to also publish maintenance releases 3.5.6 and > 3.6.4. > > In the wider TinkerPop ecosystem, we learned that Aerospike released the > first > version of their graph database which supports TinkerPop > New graph database.[1] > > ### Releases: > 3.6.4 was released on 2023-05-12. > 3.5.6 was released on 2023-05-01. > 3.6.3 was released on 2023-05-01. > > ## Community Health: > We again had some live events on Twitch[2] where the recording are > available > on > our YouTube channel[3]: > > * TinkerPop Wide: ArcadeDB - a Multi-Model Database with Gremlin - > Presenter: > Luca Garulli - founder of ArcadeDB > > * Contributorcast: Apache TinkerPop 3.5.6/3.6.3 Post-Release Review - > Presenter: Yang Xia, Valentyn Kahamlyk, Cole Greer, and Ken Hu > > * TinkerPop Wide: Introducing Graph Notebook - Presenter: Kelving Lawrence > and > Taylor Riggan from AWS, working on Amazon Neptune > > ## Links > > [1]: > > https://aerospike.com/news/press-release/aerospike-delivers-re
Re: [DISCUSS] Draft ASF Board Report - July 2023
Quick note, as Florian will be out of the office for the next two weeks, I can update and submit the ASF report with the proposed edits if there are no comments or concerns. Cheers, Yang On Fri, Jul 7, 2023 at 12:30 PM Yang Xia wrote: > Hi Florian, > > Thank you for drafting and submitting the report. > > I just have some small edits for Project Activity and added some > clarification to the Project Status sections, and wondering if you would > still be able to do a quick update? > > Here are the sections with the edits added: > > ## Project Activity: > TinkerPop released versions 3.5.6, 3.6.3, and 3.6.4. in the last quarter. > These releases were mostly maintenance releases. One noteworthy > improvement in 3.5.6 and 3.6.3 is a new multi-architecture Docker image for > Gremlin Server which supports ARM64 in addition to AMD64. This release also > included important performance improvements for Gremlin Console and > TraversalStrategy applications for users and providers. 3.6.4 was a patch > release that fixed a critical bug in the Java driver and a memory leak in > the .NET driver. > > We are closing in on releasing 3.7.0 shortly, a release that includes work > from over a year. Major improvements in this release are support for JDK 17 > and Groovy 4. This release will also include usability improvements in > areas that users often request, such as support for string manipulations > directly in Gremlin, returning vertices and edges with their properties by > default instead of only as reference elements, which often led to > confusion, especially for new users. We have also been working on adding > transaction support to TinkerGraph, the TinkerPop reference graph > implementation. > Together with 3.7.0, we plan to also publish maintenance releases 3.5.7 > and 3.6.5. > > In the wider TinkerPop ecosystem, we learned that Aerospike released the > first version of their graph database which supports TinkerPop. > New graph database.[1] > > ## Project Status: Ongoing > Activity is relatively high, considering we are actively working on > releases, have daily commits and development discussions on the dev list. > We also have an active user community on Discord where developers and users > engage on questions, as well as regular live events on Twitch for > knowledge-sharing. > > Hope you enjoy the time off! > > Best, > > Yang > > > On Fri, Jul 7, 2023 at 6:22 AM Florian Hockmann > wrote: > >> I already submitted the report as I will be out of office the next two >> weeks >> and therefore not able to submit it then. I had to add another small >> section >> about the "Project Status" which has been added as a mandatory section >> since >> our last report. Here is the final report: >> >> -- >> ## Description: >> Apache TinkerPop is a graph computing framework for both graph databases >> (OLTP) and graph analytic systems (OLAP). >> >> ## Issues: >> There are no issues requiring board attention. >> >> ## Project Status: Ongoing >> Activity is relatively high, considering that we are actively working on >> releases, have daily commits and discussions on the dev list and Discord, >> as >> well as regular live events on Twitch. >> >> ## Membership Data: >> Community changes, past quarter: >> - No new PMC members. Last addition was Yang Xia on 2023-03-15. >> - Cole Greer was added as committer on 2023-05-30 >> >> ## Project Activity: >> TinkerPop released versions 3.5.6, 3.6.3, and 3.6.4. in the last quarter. >> These >> releases were mostly maintenance releases. One noteworthy improvement in >> 3.5.6 >> and 3.6.3 is a new multi-architecture Docker image for Gremlin Server >> which >> supports ARM64 in addition to AMD64. >> 3.6.4 was a patch release that fixed a critical bug in the Java driver >> and a >> memory leak in the .NET driver. >> >> We are closing in on releasing 3.7.0 shortly, a release that includes work >> from >> over a year. Major improvements in this release are support for JDK 17 and >> Groovy 4. This release will also include usability improvements in areas >> that >> users often request like support for string manipulations directly in >> Gremlin >> and returning vertices and edges with their properties by default instead >> of >> only as reference elements which often led to confusion, especially for >> new >> users. >> Together with 3.7.0, we plan to also publish maintenance releases 3.5.6 >> and >> 3.6.4. >> >> In the wider TinkerPop ecosystem, we learned that Aerospike released the >> first >> version of their graph database which supports TinkerPop >> New graph database.[1] >> >> ### Releases: >> 3.6.4 was released on 2023-05-12. >> 3.5.6 was released on 2023-05-01. >> 3.6.3 was released on 2023-05-01. >> >> ## Community Health: >> We again had some live events on Twitch[2] where the recording are >> available >> on >> our YouTube channel[3]: >> >> * TinkerPop Wide: ArcadeDB - a Multi-Model Database with Gremlin - >> Presen
[DISCUSS] Default Token Size Limits in Jackson
Hi everyone, I want to take another stab at TINKERPOP-2948 with the upgrade to Jackson 2.15. There are some breaking changes which must be noted here. Jackson 2.15 introduces max token size limits for parsing string and numeric literals. There is also a new limit on JSON nesting depth in Jackson. The default values for these in Jackson are 20M chars for strings, 1000 chars for numbers, and a max nesting depth of 1000. My proposal is that we set our own default limits in TinkerPop such that we do not reasonably expect any users to exceed the defaults. The only Jackson default that concerns me in this regard is the max number length as it is already exceeded by one of our tests (g_withSackXBigInteger_TEN_powX1000X_assignX_V_localXoutXknowsX_barrierXnormSackXX_inXknowsX_barrier_sack). My suggestion is to set the TinkerPop default limit as 10 000 chars for numbers and assume the other defaults from Jackson. Further I would suggest we add config options such as “maxJsonStringLength”, “maxJsonNumberLength”, and “maxJsonNestingDepth” to both the Java driver and server so that it is possible for users to overcome these limits if needed. Since this change is security motivated and the impact to users is minimal, I would suggest we proceed with implementing this change in 3.5-dev. Regards, Cole Greer
Re: [DISCUSS] Proposal to add transaction support to TinkerGraph.
Hi all, I'm happy to announce that the transactional PR is ready for review https://github.com/apache/tinkerpop/pull/2087. I'm still planning a couple of small changes, but nothing big. Regards, Valentyn On Thu, Jun 15, 2023 at 10:18 PM Valentyn Kahamlyk < valent...@bitquilltech.com> wrote: > Hi all, > > I'm working on transactions implementation and I would like to discuss > testing of this feature. > > Currently available options for tests in TinkerPop: > 1. Unit tests. > For development I wrote bunch of unit tests for the newly introduced > TinkerTransactionGraph because they are easier to make and much more > convenient to debug. However, these tests are very complicated to be reused > by other providers. > 2. Gherkin tests. > This is the best option for providers to test some features. However, the > current implementation does not support many of the abilities needed to test > transactions, for example multi-step tests and multi-threaded tests. The > ideal solution would be to add such features, but unfortunately it takes a > lot of time and effort. > For basic checks of TinkerTransactionGraph existing Gherkin tests are already > used. > 3. Integration tests. > We have 2 kinds of integration tests in `gremlin-test` > a) process tests are mirror of Gherkin tests with some small differences. > b) structure tests are probably the best candidate to use for > TinkerTransactionGraph. There is already a set of tests for transactions in > TransactionTest and I can add more cases there. These tests will be used in a > similar way to TinkerGraphStructureStandardTest. > 4. Gremlin Server tests. > I think these tests have a different responsibility. > 5. GLV tests. > All GLV's already have transaction tests and we can extend them to use > TinkerTransactionGraph at server-side. > > To summarize I suggest using structure tests to verify transaction > implementation. > > Regards, Valentyn > > > On Wed, May 10, 2023 at 2:59 PM Valentyn Kahamlyk < > valent...@bitquilltech.com> wrote: > >> Hi all, >> >> I opened PR with a detailed proposal for transaction implementation: >> https://github.com/apache/tinkerpop/pull/2054. >> >> Regards, Valentyn >> >> On Mon, Feb 27, 2023 at 1:22 PM Valentyn Kahamlyk < >> valent...@bitquilltech.com> wrote: >> >>> Hi all, >>> >>> Now, if you need to use transactions in tinkerpop, the only solution is >>> to use the Neo4J plugin. Unfortunately, this plugin has not been updated >>> for a long time and is only compatible with Neo4J version 3.4, which >>> reached end of life in March, 2020. >>> >>> I propose to implement native transaction support in TinkerGraph. >>> >>> The most interesting question to discuss is the level of isolation in >>> SQL 92 terms. There are 5 options to choose from: `Read uncommitted`, `Read >>> committed`, `Repeatable read`, `Snapshot` and `Serializable`. >>> >>> In terms of balancing complexity of implementation and functionality, I >>> think the most optimal option is `Read committed` or `Repeatable read`. >>> >>> I hope to implement `Read committed`, it is enough to add versions to >>> the Vertices and Edges, add list of updated Elements in Graph. >>> Write lock can be Vertex-level and Edge-level. >>> >>> Regards, Valentyn >>> >>