This is an automated email from the ASF dual-hosted git repository.

colegreer pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/tinkerpop.git

commit e3e5c97a44ecab467893179d4e73207f7199d953
Merge: e6ac3ec0c8 a9c9066921
Author: Cole-Greer <[email protected]>
AuthorDate: Mon May 5 10:36:27 2025 -0700

    Merge branch '3.8-dev'

 CHANGELOG.asciidoc                                 |   3 +-
 .../traversal/step/filter/DedupGlobalStep.java     |   3 +
 .../traversal/step/sideEffect/SackValueStep.java   |   3 +
 .../traversal/step/filter/DedupGlobalStepTest.java |   6 +
 .../step/sideEffect/SackValueStepTest.java         |   6 +
 .../Gremlin.Net.IntegrationTest/Gherkin/Gremlin.cs |  14 +++
 gremlin-go/driver/cucumber/gremlin.go              |  14 +++
 .../gremlin-javascript/test/cucumber/gremlin.js    |   2 +
 gremlin-python/src/main/python/radish/gremlin.py   |   2 +
 gremlin-server/pom.xml                             |  10 ++
 .../gremlin/server/AbstractChannelizer.java        | 102 +++++++++--------
 .../apache/tinkerpop/gremlin/server/Settings.java  |   6 +
 .../util/SSLStoreFilesModificationWatcher.java     | 124 +++++++++++++++++++++
 .../util/SSLStoreFilesModificationWatcherTest.java |  65 +++++++++++
 .../gremlin/test/features/filter/Dedup.feature     |  11 +-
 .../test/features/sideEffect/GroupCount.feature    |   2 +-
 .../gremlin/test/features/sideEffect/Sack.feature  |  11 +-
 pom.xml                                            |   6 +
 18 files changed, 339 insertions(+), 51 deletions(-)

diff --cc gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Gherkin/Gremlin.cs
index 1b68793816,0ec2b51e13..384dbf3ff9
--- a/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Gherkin/Gremlin.cs
+++ b/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Gherkin/Gremlin.cs
@@@ -200,10 -200,8 +200,15 @@@ namespace Gremlin.Net.IntegrationTest.G
                 {"g_VX1X_valuesXageX_dedupXlocalX_unfold", new 
List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) 
=>g.V(p["vid1"]).Values<object>("age").Dedup(Scope.Local).Unfold<object>()}}, 
                 {"g_V_properties_dedup_count", new 
List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) =>g.AddV("person").Property("name", 
"josh").AddV("person").Property("name", "josh").AddV("person").Property("name", 
"josh"), (g,p) =>g.V().Properties<object>("name").Dedup().Count()}}, 
                 {"g_V_properties_dedup_byXvalueX_count", new 
List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) =>g.AddV("person").Property("name", 
"josh").AddV("person").Property("name", "josh").AddV("person").Property("name", 
"josh"), (g,p) 
=>g.V().Properties<object>("name").Dedup().By(T.Value).Count()}}, 
++<<<<<<< HEAD
 +               {"g_V_count_discard", new List<Func<GraphTraversalSource, 
IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Count().Discard()}},
 +               {"g_V_hasLabelXpersonX_discard", new 
List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) =>g.V().HasLabel("person").Discard()}},
 +               {"g_VX1X_outXcreatedX_discard", new 
List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) =>g.V(p["vid1"]).Out("created").Discard()}},
 +               {"g_V_drop", new List<Func<GraphTraversalSource, 
IDictionary<string, object>, ITraversal>> {(g,p) 
=>g.AddV().As("a").AddV().As("b").AddE("knows").To("a"), (g,p) =>g.V().Drop(), 
(g,p) =>g.V(), (g,p) =>g.E()}},
++=======
+                {"g_V_both_hasXlabel_softwareX_dedup_byXlangX_byXnameX_name", 
new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) =>g.V().Both().Has(T.Label, 
"software").Dedup().By("lang").By("name").Values<object>("name")}}, 
+                {"g_V_drop", new List<Func<GraphTraversalSource, 
IDictionary<string, object>, ITraversal>> {(g,p) 
=>g.AddV().As("a").AddV().As("b").AddE("knows").To("a"), (g,p) =>g.V().Drop(), 
(g,p) =>g.V(), (g,p) =>g.E()}}, 
++>>>>>>> 3.8-dev
                 {"g_V_outE_drop", new List<Func<GraphTraversalSource, 
IDictionary<string, object>, ITraversal>> {(g,p) 
=>g.AddV().As("a").AddV().As("b").AddE("knows").To("a"), (g,p) 
=>g.V().OutE().Drop(), (g,p) =>g.V(), (g,p) =>g.E()}}, 
                 {"g_V_properties_drop", new List<Func<GraphTraversalSource, 
IDictionary<string, object>, ITraversal>> {(g,p) =>g.AddV().Property("name", 
"bob").AddV().Property("name", "alice"), (g,p) 
=>g.V().Properties<object>().Drop(), (g,p) =>g.V(), (g,p) 
=>g.V().Properties<object>()}}, 
                 {"g_E_propertiesXweightX_drop", new 
List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) =>g.AddV("person").Property("name", "marko").Property("age", 
29).As("marko").AddV("person").Property("name", "vadas").Property("age", 
27).As("vadas").AddV("software").Property("name", "lop").Property("lang", 
"java").As("lop").AddV("person").Property("name", "josh").Property("age", 
32).As("josh").AddV("software").Property("name", "ripple").Property("lang", " 
[...]
@@@ -1649,6 -1641,12 +1654,15 @@@
                 {"g_V_sackXassignX_byXageX_sack", new 
List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) =>g.V().Sack(Operator.Assign).By("age").Sack<object>()}}, 
                 
{"g_withSackXBigInteger_TEN_powX1000X_assignX_V_localXoutXknowsX_barrierXnormSackXX_inXknowsX_barrier_sack",
 new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) =>g.WithSack(p["xx1"], 
Operator.Assign).V().Local<object>(__.Out("knows").Barrier(Barrier.NormSack)).In("knows").Barrier().Sack<object>()}},
 
                 {"g_withSackX2X_V_sackXdivX_byXconstantX4_0XX_sack", new 
List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) 
=>g.WithSack(2).V().Sack(Operator.Div).By(__.Constant<object>(p["xx1"])).Sack<object>()}},
 
++<<<<<<< HEAD
++=======
+                {"g_V_sackXassignX_byXageX_byXnameX_sack", new 
List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) =>g.V().Sack(Operator.Assign).By("age").By("name").Sack<object>()}}, 
+                {"g_V_sideEffectXidentityX", new 
List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) =>g.V().SideEffect(__.Identity())}}, 
+                {"g_V_sideEffectXidentity_valuesXnameXX", new 
List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) =>g.V().SideEffect(__.Identity().Values<object>("name"))}}, 
+                {"g_V_sideEffectXpropertyXage_22X", new 
List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) =>g.AddV("person").Property("age", 21), (g,p) 
=>g.V().SideEffect(__.Property("age", 22)), (g,p) =>g.V().Has("age", 21), (g,p) 
=>g.V().Has("age", 22)}}, 
+                
{"g_V_group_byXvaluesXnameX_sideEffectXconstantXzyxXX_substringX1XX_byXconstantX1X_sideEffectXconstantXxyzXXX",
 new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) =>g.V().Group<object, 
object>().By(__.Values<object>("name").SideEffect(__.Constant<object>("zyx")).Substring(0,
 1)).By(__.Constant<object>(1).SideEffect(__.Constant<object>("xyz")))}}, 
+                
{"g_withSideEffectXx_setX_V_both_both_sideEffectXstoreXxX_byXnameXX_capXxX_unfold",
 new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) =>g.WithSideEffect("x", new HashSet<object> {  
}).V().Both().Both().SideEffect(__.Store("x").By("name")).Cap<object>("x").Unfold<object>()}},
 
++>>>>>>> 3.8-dev
                 {"g_V_hasXageX_groupCountXaX_byXnameX_out_capXaX", new 
List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) =>g.V().Has("age").GroupCount("a").By("name").Out().Cap<object>("a")}}, 
                 {"g_V_groupXaX_byXageX_capXaX", new 
List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) =>g.V().Group("a").By("age").Cap<object>("a")}}, 
                 {"g_V_groupXaX_byXnameX_capXaX", new 
List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) =>g.V().Group("a").By("name").Cap<object>("a")}}, 
diff --cc gremlin-go/driver/cucumber/gremlin.go
index 4638001d98,be5821231c..d7ef1358d2
--- a/gremlin-go/driver/cucumber/gremlin.go
+++ b/gremlin-go/driver/cucumber/gremlin.go
@@@ -173,10 -169,8 +173,15 @@@ var translationMap = map[string][]func(
      "g_VX1X_valuesXageX_dedupXlocalX_unfold": {func(g 
*gremlingo.GraphTraversalSource, p map[string]interface{}) 
*gremlingo.GraphTraversal {return 
g.V(p["vid1"]).Values("age").Dedup(gremlingo.Scope.Local).Unfold()}}, 
      "g_V_properties_dedup_count": {func(g *gremlingo.GraphTraversalSource, p 
map[string]interface{}) *gremlingo.GraphTraversal {return 
g.AddV("person").Property("name", "josh").AddV("person").Property("name", 
"josh").AddV("person").Property("name", "josh")}, func(g 
*gremlingo.GraphTraversalSource, p map[string]interface{}) 
*gremlingo.GraphTraversal {return g.V().Properties("name").Dedup().Count()}}, 
      "g_V_properties_dedup_byXvalueX_count": {func(g 
*gremlingo.GraphTraversalSource, p map[string]interface{}) 
*gremlingo.GraphTraversal {return g.AddV("person").Property("name", 
"josh").AddV("person").Property("name", "josh").AddV("person").Property("name", 
"josh")}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) 
*gremlingo.GraphTraversal {return 
g.V().Properties("name").Dedup().By(gremlingo.T.Value).Count()}}, 
++<<<<<<< HEAD
 +    "g_V_count_discard": {func(g *gremlingo.GraphTraversalSource, p 
map[string]interface{}) *gremlingo.GraphTraversal {return 
g.V().Count().Discard()}},
 +    "g_V_hasLabelXpersonX_discard": {func(g *gremlingo.GraphTraversalSource, 
p map[string]interface{}) *gremlingo.GraphTraversal {return 
g.V().HasLabel("person").Discard()}},
 +    "g_VX1X_outXcreatedX_discard": {func(g *gremlingo.GraphTraversalSource, p 
map[string]interface{}) *gremlingo.GraphTraversal {return 
g.V(p["vid1"]).Out("created").Discard()}},
 +    "g_V_drop": {func(g *gremlingo.GraphTraversalSource, p 
map[string]interface{}) *gremlingo.GraphTraversal {return 
g.AddV().As("a").AddV().As("b").AddE("knows").To("a")}, func(g 
*gremlingo.GraphTraversalSource, p map[string]interface{}) 
*gremlingo.GraphTraversal {return g.V().Drop()}, func(g 
*gremlingo.GraphTraversalSource, p map[string]interface{}) 
*gremlingo.GraphTraversal {return g.V()}, func(g 
*gremlingo.GraphTraversalSource, p map[string]interface{}) 
*gremlingo.GraphTraversal {re [...]
++=======
+     "g_V_both_hasXlabel_softwareX_dedup_byXlangX_byXnameX_name": {func(g 
*gremlingo.GraphTraversalSource, p map[string]interface{}) 
*gremlingo.GraphTraversal {return g.V().Both().Has(gremlingo.T.Label, 
"software").Dedup().By("lang").By("name").Values("name")}}, 
+     "g_V_drop": {func(g *gremlingo.GraphTraversalSource, p 
map[string]interface{}) *gremlingo.GraphTraversal {return 
g.AddV().As("a").AddV().As("b").AddE("knows").To("a")}, func(g 
*gremlingo.GraphTraversalSource, p map[string]interface{}) 
*gremlingo.GraphTraversal {return g.V().Drop()}, func(g 
*gremlingo.GraphTraversalSource, p map[string]interface{}) 
*gremlingo.GraphTraversal {return g.V()}, func(g 
*gremlingo.GraphTraversalSource, p map[string]interface{}) 
*gremlingo.GraphTraversal {re [...]
++>>>>>>> 3.8-dev
      "g_V_outE_drop": {func(g *gremlingo.GraphTraversalSource, p 
map[string]interface{}) *gremlingo.GraphTraversal {return 
g.AddV().As("a").AddV().As("b").AddE("knows").To("a")}, func(g 
*gremlingo.GraphTraversalSource, p map[string]interface{}) 
*gremlingo.GraphTraversal {return g.V().OutE().Drop()}, func(g 
*gremlingo.GraphTraversalSource, p map[string]interface{}) 
*gremlingo.GraphTraversal {return g.V()}, func(g 
*gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphT 
[...]
      "g_V_properties_drop": {func(g *gremlingo.GraphTraversalSource, p 
map[string]interface{}) *gremlingo.GraphTraversal {return 
g.AddV().Property("name", "bob").AddV().Property("name", "alice")}, func(g 
*gremlingo.GraphTraversalSource, p map[string]interface{}) 
*gremlingo.GraphTraversal {return g.V().Properties().Drop()}, func(g 
*gremlingo.GraphTraversalSource, p map[string]interface{}) 
*gremlingo.GraphTraversal {return g.V()}, func(g 
*gremlingo.GraphTraversalSource, p map[string]interf [...]
      "g_E_propertiesXweightX_drop": {func(g *gremlingo.GraphTraversalSource, p 
map[string]interface{}) *gremlingo.GraphTraversal {return 
g.AddV("person").Property("name", "marko").Property("age", 
29).As("marko").AddV("person").Property("name", "vadas").Property("age", 
27).As("vadas").AddV("software").Property("name", "lop").Property("lang", 
"java").As("lop").AddV("person").Property("name", "josh").Property("age", 
32).As("josh").AddV("software").Property("name", "ripple").Property("lang", 
[...]
@@@ -1622,6 -1610,12 +1627,15 @@@
      "g_V_sackXassignX_byXageX_sack": {func(g *gremlingo.GraphTraversalSource, 
p map[string]interface{}) *gremlingo.GraphTraversal {return 
g.V().Sack(gremlingo.Operator.Assign).By("age").Sack()}}, 
      
"g_withSackXBigInteger_TEN_powX1000X_assignX_V_localXoutXknowsX_barrierXnormSackXX_inXknowsX_barrier_sack":
 {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) 
*gremlingo.GraphTraversal {return g.WithSack(p["xx1"], 
gremlingo.Operator.Assign).V().Local(gremlingo.T__.Out("knows").Barrier(gremlingo.Barrier.NormSack)).In("knows").Barrier().Sack()}},
 
      "g_withSackX2X_V_sackXdivX_byXconstantX4_0XX_sack": {func(g 
*gremlingo.GraphTraversalSource, p map[string]interface{}) 
*gremlingo.GraphTraversal {return 
g.WithSack(2).V().Sack(gremlingo.Operator.Div).By(gremlingo.T__.Constant(p["xx1"])).Sack()}},
 
++<<<<<<< HEAD
++=======
+     "g_V_sackXassignX_byXageX_byXnameX_sack": {func(g 
*gremlingo.GraphTraversalSource, p map[string]interface{}) 
*gremlingo.GraphTraversal {return 
g.V().Sack(gremlingo.Operator.Assign).By("age").By("name").Sack()}}, 
+     "g_V_sideEffectXidentityX": {func(g *gremlingo.GraphTraversalSource, p 
map[string]interface{}) *gremlingo.GraphTraversal {return 
g.V().SideEffect(gremlingo.T__.Identity())}}, 
+     "g_V_sideEffectXidentity_valuesXnameXX": {func(g 
*gremlingo.GraphTraversalSource, p map[string]interface{}) 
*gremlingo.GraphTraversal {return 
g.V().SideEffect(gremlingo.T__.Identity().Values("name"))}}, 
+     "g_V_sideEffectXpropertyXage_22X": {func(g 
*gremlingo.GraphTraversalSource, p map[string]interface{}) 
*gremlingo.GraphTraversal {return g.AddV("person").Property("age", 21)}, func(g 
*gremlingo.GraphTraversalSource, p map[string]interface{}) 
*gremlingo.GraphTraversal {return 
g.V().SideEffect(gremlingo.T__.Property("age", 22))}, func(g 
*gremlingo.GraphTraversalSource, p map[string]interface{}) 
*gremlingo.GraphTraversal {return g.V().Has("age", 21)}, func(g 
*gremlingo.GraphTraversalSou [...]
+     
"g_V_group_byXvaluesXnameX_sideEffectXconstantXzyxXX_substringX1XX_byXconstantX1X_sideEffectXconstantXxyzXXX":
 {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) 
*gremlingo.GraphTraversal {return 
g.V().Group().By(gremlingo.T__.Values("name").SideEffect(gremlingo.T__.Constant("zyx")).Substring(0,
 1)).By(gremlingo.T__.Constant(1).SideEffect(gremlingo.T__.Constant("xyz")))}}, 
+     
"g_withSideEffectXx_setX_V_both_both_sideEffectXstoreXxX_byXnameXX_capXxX_unfold":
 {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) 
*gremlingo.GraphTraversal {return g.WithSideEffect("x", 
gremlingo.NewSimpleSet()).V().Both().Both().SideEffect(gremlingo.T__.Store("x").By("name")).Cap("x").Unfold()}},
 
++>>>>>>> 3.8-dev
      "g_V_hasXageX_groupCountXaX_byXnameX_out_capXaX": {func(g 
*gremlingo.GraphTraversalSource, p map[string]interface{}) 
*gremlingo.GraphTraversal {return 
g.V().Has("age").GroupCount("a").By("name").Out().Cap("a")}}, 
      "g_V_groupXaX_byXageX_capXaX": {func(g *gremlingo.GraphTraversalSource, p 
map[string]interface{}) *gremlingo.GraphTraversal {return 
g.V().Group("a").By("age").Cap("a")}}, 
      "g_V_groupXaX_byXnameX_capXaX": {func(g *gremlingo.GraphTraversalSource, 
p map[string]interface{}) *gremlingo.GraphTraversal {return 
g.V().Group("a").By("name").Cap("a")}}, 
diff --cc 
gremlin-javascript/src/main/javascript/gremlin-javascript/test/cucumber/gremlin.js
index 5b20b1f690,2d6e42b706..c762148a6b
--- 
a/gremlin-javascript/src/main/javascript/gremlin-javascript/test/cucumber/gremlin.js
+++ 
b/gremlin-javascript/src/main/javascript/gremlin-javascript/test/cucumber/gremlin.js
@@@ -200,15 -199,7 +200,16 @@@ const gremlins = 
      g_VX1X_valuesXageX_dedupXlocalX_unfold: [function({g, vid1}) { return 
g.V(vid1).values("age").dedup(Scope.local).unfold() }], 
      g_V_properties_dedup_count: [function({g}) { return 
g.addV("person").property("name", "josh").addV("person").property("name", 
"josh").addV("person").property("name", "josh") }, function({g}) { return 
g.V().properties("name").dedup().count() }], 
      g_V_properties_dedup_byXvalueX_count: [function({g}) { return 
g.addV("person").property("name", "josh").addV("person").property("name", 
"josh").addV("person").property("name", "josh") }, function({g}) { return 
g.V().properties("name").dedup().by(T.value).count() }], 
+     g_V_both_hasXlabel_softwareX_dedup_byXlangX_byXnameX_name: [function({g}) 
{ return g.V().both().has(T.label, 
"software").dedup().by("lang").by("name").values("name") }], 
 +    g_V_count_discard: [function({g}) { return g.V().count().discard() }], 
 +    g_V_hasLabelXpersonX_discard: [function({g}) { return 
g.V().hasLabel("person").discard() }], 
 +    g_VX1X_outXcreatedX_discard: [function({g, vid1}) { return 
g.V(vid1).out("created").discard() }], 
 +    g_V_discard: [function({g}) { return g.V().discard() }], 
 +    g_V_discard_discard: [function({g}) { return g.V().discard().discard() 
}], 
 +    g_V_discard_fold: [function({g}) { return g.V().discard().fold() }], 
 +    g_V_discard_fold_discard: [function({g}) { return 
g.V().discard().fold().discard() }], 
 +    g_V_discard_fold_constantX1X: [function({g}) { return 
g.V().discard().fold().constant(1) }], 
 +    g_V_projectXxX_byXcoalesceXage_isXgtX29XX_discardXX_selectXxX: 
[function({g}) { return 
g.V().project("x").by(__.coalesce(__.values("age").is(P.gt(29)), 
__.discard())).select("x") }], 
      g_V_drop: [function({g}) { return 
g.addV().as("a").addV().as("b").addE("knows").to("a") }, function({g}) { return 
g.V().drop() }, function({g}) { return g.V() }, function({g}) { return g.E() 
}], 
      g_V_outE_drop: [function({g}) { return 
g.addV().as("a").addV().as("b").addE("knows").to("a") }, function({g}) { return 
g.V().outE().drop() }, function({g}) { return g.V() }, function({g}) { return 
g.E() }], 
      g_V_properties_drop: [function({g}) { return g.addV().property("name", 
"bob").addV().property("name", "alice") }, function({g}) { return 
g.V().properties().drop() }, function({g}) { return g.V() }, function({g}) { 
return g.V().properties() }], 
diff --cc gremlin-python/src/main/python/radish/gremlin.py
index e390e3f28e,97fa2afdcd..10ad03b3e4
--- a/gremlin-python/src/main/python/radish/gremlin.py
+++ b/gremlin-python/src/main/python/radish/gremlin.py
@@@ -173,15 -172,7 +173,16 @@@ world.gremlins = 
      'g_VX1X_valuesXageX_dedupXlocalX_unfold': [(lambda g, 
vid1=None:g.V(vid1).values('age').dedup(Scope.local).unfold())], 
      'g_V_properties_dedup_count': [(lambda 
g:g.add_v('person').property('name', 'josh').add_v('person').property('name', 
'josh').add_v('person').property('name', 'josh')), (lambda 
g:g.V().properties('name').dedup().count())], 
      'g_V_properties_dedup_byXvalueX_count': [(lambda 
g:g.add_v('person').property('name', 'josh').add_v('person').property('name', 
'josh').add_v('person').property('name', 'josh')), (lambda 
g:g.V().properties('name').dedup().by(T.value).count())], 
+     'g_V_both_hasXlabel_softwareX_dedup_byXlangX_byXnameX_name': [(lambda 
g:g.V().both().has(T.label, 
'software').dedup().by('lang').by('name').values('name'))], 
 +    'g_V_count_discard': [(lambda g:g.V().count().discard())], 
 +    'g_V_hasLabelXpersonX_discard': [(lambda 
g:g.V().has_label('person').discard())], 
 +    'g_VX1X_outXcreatedX_discard': [(lambda g, 
vid1=None:g.V(vid1).out('created').discard())], 
 +    'g_V_discard': [(lambda g:g.V().discard())], 
 +    'g_V_discard_discard': [(lambda g:g.V().discard().discard())], 
 +    'g_V_discard_fold': [(lambda g:g.V().discard().fold())], 
 +    'g_V_discard_fold_discard': [(lambda 
g:g.V().discard().fold().discard())], 
 +    'g_V_discard_fold_constantX1X': [(lambda 
g:g.V().discard().fold().constant(1))], 
 +    'g_V_projectXxX_byXcoalesceXage_isXgtX29XX_discardXX_selectXxX': [(lambda 
g:g.V().project('x').by(__.coalesce(__.values('age').is_(P.gt(29)), 
__.discard())).select('x'))], 
      'g_V_drop': [(lambda 
g:g.add_v().as_('a').add_v().as_('b').add_e('knows').to('a')), (lambda 
g:g.V().drop()), (lambda g:g.V()), (lambda g:g.E())], 
      'g_V_outE_drop': [(lambda 
g:g.add_v().as_('a').add_v().as_('b').add_e('knows').to('a')), (lambda 
g:g.V().out_e().drop()), (lambda g:g.V()), (lambda g:g.E())], 
      'g_V_properties_drop': [(lambda g:g.add_v().property('name', 
'bob').add_v().property('name', 'alice')), (lambda 
g:g.V().properties().drop()), (lambda g:g.V()), (lambda g:g.V().properties())], 
diff --cc 
gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/AbstractChannelizer.java
index a8969fc964,9af52699dc..5d81327aa1
--- 
a/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/AbstractChannelizer.java
+++ 
b/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/AbstractChannelizer.java
@@@ -21,10 -21,18 +21,16 @@@ package org.apache.tinkerpop.gremlin.se
  import io.netty.channel.group.ChannelGroup;
  import io.netty.handler.ssl.ClientAuth;
  import io.netty.handler.ssl.SslContext;
- import io.netty.handler.ssl.SslContextBuilder;
  import io.netty.handler.ssl.SslProvider;
  import io.netty.handler.timeout.IdleStateHandler;
+ import nl.altindag.ssl.SSLFactory;
+ import nl.altindag.ssl.exception.GenericSecurityException;
+ import nl.altindag.ssl.netty.util.NettySslUtils;
+ import nl.altindag.ssl.util.SSLFactoryUtils;
+ import 
org.apache.tinkerpop.gremlin.server.util.SSLStoreFilesModificationWatcher;
+ import org.apache.tinkerpop.gremlin.util.MessageSerializer;
+ import org.apache.tinkerpop.gremlin.util.message.RequestMessage;
+ import org.apache.tinkerpop.gremlin.util.message.ResponseMessage;
 -import org.apache.tinkerpop.gremlin.util.ser.GraphBinaryMessageSerializerV1;
 -import org.apache.tinkerpop.gremlin.util.ser.GraphSONMessageSerializerV2;
  import org.apache.tinkerpop.gremlin.groovy.engine.GremlinExecutor;
  import org.apache.tinkerpop.gremlin.server.auth.Authenticator;
  import org.apache.tinkerpop.gremlin.server.authz.Authorizer;
@@@ -34,11 -44,6 +40,8 @@@ import org.apache.tinkerpop.gremlin.str
  import io.netty.channel.ChannelInitializer;
  import io.netty.channel.ChannelPipeline;
  import io.netty.channel.socket.SocketChannel;
- import org.apache.tinkerpop.gremlin.util.MessageSerializer;
- import org.apache.tinkerpop.gremlin.util.message.RequestMessage;
- import org.apache.tinkerpop.gremlin.util.message.ResponseMessage;
 +import org.apache.tinkerpop.gremlin.util.ser.GraphBinaryMessageSerializerV4;
 +import org.apache.tinkerpop.gremlin.util.ser.GraphSONMessageSerializerV4;
  import org.javatuples.Pair;
  import org.slf4j.Logger;
  import org.slf4j.LoggerFactory;
diff --cc pom.xml
index 68472612e6,e6275c43bb..e65f20de67
--- a/pom.xml
+++ b/pom.xml
@@@ -174,10 -175,10 +174,11 @@@ limitations under the License
          <metrics.version>3.0.2</metrics.version>
          <mockito.version>3.10.0</mockito.version>
          <netty.version>4.1.101.Final</netty.version>
 -        <slf4j.version>1.7.25</slf4j.version>
 +        <slf4j.version>2.0.16</slf4j.version>
          <snakeyaml.version>2.0</snakeyaml.version>
 -        <spark.version>3.3.2</spark.version>
 +        <spark.version>3.5.4</spark.version>
 +        <awssdk.version>2.29.3</awssdk.version>
+         <sslcontext.kickstart.version>9.1.0</sslcontext.kickstart.version>
  
          <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
          
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>

Reply via email to