Modified: tinkerpop/site/docs/4.0.0-SNAPSHOT/upgrade/index.html URL: http://svn.apache.org/viewvc/tinkerpop/site/docs/4.0.0-SNAPSHOT/upgrade/index.html?rev=1923180&r1=1923179&r2=1923180&view=diff ============================================================================== --- tinkerpop/site/docs/4.0.0-SNAPSHOT/upgrade/index.html (original) +++ tinkerpop/site/docs/4.0.0-SNAPSHOT/upgrade/index.html Fri Jan 17 02:11:00 2025 @@ -820,63 +820,27 @@ table.CodeRay td.code{padding:0 0 0 .75e <div id="toctitle">Table of Contents</div> <ul class="sectlevel0"> <li><a href="#_tinkerpop_upgrade_information">TinkerPop Upgrade Information</a></li> -<li><a href="#_tinkerpop_4_0_0">TinkerPop 4.0.0</a> +<li><a href="#_tinkerpop_3_7_0">TinkerPop 3.7.0</a> <ul class="sectlevel1"> -<li><a href="#_tinkerpop_4_0_0_m1">TinkerPop 4.0.0.M1</a> +<li><a href="#_tinkerpop_3_7_4">TinkerPop 3.7.4</a> <ul class="sectlevel2"> <li><a href="#_upgrading_for_users">Upgrading for Users</a> <ul class="sectlevel3"> -<li><a href="#_result_bulking_from_server">Result Bulking from Server</a></li> -<li><a href="#_bulkset_behavior_changes">BulkSet Behavior Changes</a></li> -<li><a href="#_configuration_changes">Configuration changes</a></li> -<li><a href="#_simplification_to_g_creation">Simplification to g creation</a></li> -<li><a href="#_changes_to_java_requestinterceptor">Changes to Java RequestInterceptor</a></li> -<li><a href="#_addition_of_python_interceptor">Addition of Python interceptor</a></li> -<li><a href="#_changes_to_deserialization_for_gremlin_javascript">Changes to deserialization for gremlin-javascript</a></li> -<li><a href="#_gremlin_grammar_changes">Gremlin Grammar Changes</a></li> -<li><a href="#_renamed_none_to_discard">Renamed none() to discard()</a></li> -<li><a href="#_splitting_a_string_into_characters_using_split">Splitting a string into characters using split()</a></li> -<li><a href="#_improved_handling_of_integer_overflows">Improved handling of integer overflows</a></li> -<li><a href="#_seedstrategy_construction">SeedStrategy Construction</a></li> -<li><a href="#_removal_of_gremlin_archetype">Removal of <code>gremlin-archetype</code></a></li> -<li><a href="#_improved_translators">Improved Translators</a></li> -<li><a href="#_change_to_optionsstrategy_in_gremlin_python">Change to <code>OptionsStrategy</code> in <code>gremlin-python</code></a></li> -<li><a href="#_custom_traversal_strategy_construction">Custom Traversal Strategy Construction</a></li> -<li><a href="#_changes_to_serialization">Changes to Serialization</a></li> -<li><a href="#_changes_to_authentication_and_authorization">Changes to Authentication and Authorization</a></li> -<li><a href="#_transactions_disabled">Transactions Disabled</a></li> -<li><a href="#_result_bulking_changes">Result Bulking Changes</a></li> -<li><a href="#_gremlin_java_changes">Gremlin Java Changes</a></li> +<li><a href="#_improved_server_memory_management">Improved Server Memory Management</a></li> +<li><a href="#_channel_metrics">Channel Metrics</a></li> </ul> </li> <li><a href="#_upgrading_for_providers">Upgrading for Providers</a> <ul class="sectlevel3"> -<li><a href="#_renaming_nonestep_to_discardstep">Renaming NoneStep to DiscardStep</a></li> -<li><a href="#_changes_to_serialization_2">Changes to Serialization</a></li> <li><a href="#_graph_system_providers">Graph System Providers</a></li> <li><a href="#_graph_driver_providers">Graph Driver Providers</a></li> </ul> </li> </ul> </li> -</ul> -</li> -<li><a href="#_tinkerpop_3_7_0">TinkerPop 3.7.0</a> -<ul class="sectlevel1"> -<li><a href="#_tinkerpop_3_7_4">TinkerPop 3.7.4</a> -<ul class="sectlevel2"> -<li><a href="#_upgrading_for_users_2">Upgrading for Users</a></li> -<li><a href="#_upgrading_for_providers_2">Upgrading for Providers</a> -<ul class="sectlevel3"> -<li><a href="#_graph_system_providers_2">Graph System Providers</a></li> -<li><a href="#_graph_driver_providers_2">Graph Driver Providers</a></li> -</ul> -</li> -</ul> -</li> <li><a href="#_tinkerpop_3_7_3">TinkerPop 3.7.3</a> <ul class="sectlevel2"> -<li><a href="#_upgrading_for_users_3">Upgrading for Users</a> +<li><a href="#_upgrading_for_users_2">Upgrading for Users</a> <ul class="sectlevel3"> <li><a href="#_graphbinary_compatibility">GraphBinary Compatibility</a></li> </ul> @@ -886,23 +850,23 @@ table.CodeRay td.code{padding:0 0 0 .75e <li><a href="#_tinkerpop_3_7_2">TinkerPop 3.7.2</a></li> <li><a href="#_tinkerpop_3_7_1">TinkerPop 3.7.1</a> <ul class="sectlevel2"> -<li><a href="#_upgrading_for_users_4">Upgrading for Users</a> +<li><a href="#_upgrading_for_users_3">Upgrading for Users</a> <ul class="sectlevel3"> <li><a href="#_string_manipulation_steps">String Manipulation Steps</a></li> <li><a href="#_list_manipulation_steps">List Manipulation Steps</a></li> <li><a href="#_date_manipulation_steps">Date Manipulation Steps</a></li> </ul> </li> -<li><a href="#_upgrading_for_providers_3">Upgrading for Providers</a> +<li><a href="#_upgrading_for_providers_2">Upgrading for Providers</a> <ul class="sectlevel3"> -<li><a href="#_graph_system_providers_3">Graph System Providers</a></li> +<li><a href="#_graph_system_providers_2">Graph System Providers</a></li> </ul> </li> </ul> </li> <li><a href="#_tinkerpop_3_7_0_2">TinkerPop 3.7.0</a> <ul class="sectlevel2"> -<li><a href="#_upgrading_for_users_5">Upgrading for Users</a> +<li><a href="#_upgrading_for_users_4">Upgrading for Users</a> <ul class="sectlevel3"> <li><a href="#_string_concat_step">String concat() Step</a></li> <li><a href="#_union_start_step">union() Start Step</a></li> @@ -917,10 +881,10 @@ table.CodeRay td.code{padding:0 0 0 .75e <li><a href="#_building_and_running_with_jdk_17">Building and Running with JDK 17</a></li> </ul> </li> -<li><a href="#_upgrading_for_providers_4">Upgrading for Providers</a> +<li><a href="#_upgrading_for_providers_3">Upgrading for Providers</a> <ul class="sectlevel3"> -<li><a href="#_graph_driver_providers_3">Graph Driver Providers</a></li> -<li><a href="#_graph_system_providers_4">Graph System Providers</a></li> +<li><a href="#_graph_driver_providers_2">Graph Driver Providers</a></li> +<li><a href="#_graph_system_providers_3">Graph System Providers</a></li> </ul> </li> </ul> @@ -931,7 +895,7 @@ table.CodeRay td.code{padding:0 0 0 .75e <ul class="sectlevel1"> <li><a href="#_tinkerpop_3_6_8">TinkerPop 3.6.8</a> <ul class="sectlevel2"> -<li><a href="#_upgrading_for_users_6">Upgrading for Users</a> +<li><a href="#_upgrading_for_users_5">Upgrading for Users</a> <ul class="sectlevel3"> <li><a href="#_runtime_updates">Runtime Updates</a></li> </ul> @@ -940,7 +904,7 @@ table.CodeRay td.code{padding:0 0 0 .75e </li> <li><a href="#_tinkerpop_3_6_7">TinkerPop 3.6.7</a> <ul class="sectlevel2"> -<li><a href="#_upgrading_for_users_7">Upgrading for Users</a> +<li><a href="#_upgrading_for_users_6">Upgrading for Users</a> <ul class="sectlevel3"> <li><a href="#_runtime_version_upgrades">Runtime Version Upgrades</a></li> <li><a href="#_gremlin_net_fixed_a_bug_in_traversal_enumeration_on_net_8">Gremlin.Net: Fixed a bug in traversal enumeration on .NET 8</a></li> @@ -950,12 +914,12 @@ table.CodeRay td.code{padding:0 0 0 .75e </li> <li><a href="#_tinkerpop_3_6_6">TinkerPop 3.6.6</a> <ul class="sectlevel2"> -<li><a href="#_upgrading_for_providers_5">Upgrading for Providers</a></li> +<li><a href="#_upgrading_for_providers_4">Upgrading for Providers</a></li> </ul> </li> <li><a href="#_tinkerpop_3_6_5">TinkerPop 3.6.5</a> <ul class="sectlevel2"> -<li><a href="#_upgrading_for_users_8">Upgrading for Users</a> +<li><a href="#_upgrading_for_users_7">Upgrading for Users</a> <ul class="sectlevel3"> <li><a href="#_http_plain_text">HTTP Plain Text</a></li> <li><a href="#_untyped_graphson">Untyped GraphSON</a></li> @@ -966,35 +930,35 @@ table.CodeRay td.code{padding:0 0 0 .75e <li><a href="#_tinkerpop_3_6_4">TinkerPop 3.6.4</a></li> <li><a href="#_tinkerpop_3_6_3">TinkerPop 3.6.3</a> <ul class="sectlevel2"> -<li><a href="#_upgrading_for_users_9">Upgrading for Users</a> +<li><a href="#_upgrading_for_users_8">Upgrading for Users</a> <ul class="sectlevel3"> <li><a href="#_deprecation_warning_for_go_1_17">Deprecation Warning for Go 1.17</a></li> </ul> </li> -<li><a href="#_upgrading_for_providers_6">Upgrading for Providers</a> +<li><a href="#_upgrading_for_providers_5">Upgrading for Providers</a> <ul class="sectlevel3"> -<li><a href="#_graph_system_providers_5">Graph System Providers</a></li> +<li><a href="#_graph_system_providers_4">Graph System Providers</a></li> </ul> </li> </ul> </li> <li><a href="#_tinkerpop_3_6_2">TinkerPop 3.6.2</a> <ul class="sectlevel2"> -<li><a href="#_upgrading_for_users_10">Upgrading for Users</a> +<li><a href="#_upgrading_for_users_9">Upgrading for Users</a> <ul class="sectlevel3"> <li><a href="#_changes_to_mergeve_semantics">Changes to mergeV/E semantics</a></li> </ul> </li> -<li><a href="#_upgrading_for_providers_7">Upgrading for Providers</a> +<li><a href="#_upgrading_for_providers_6">Upgrading for Providers</a> <ul class="sectlevel3"> -<li><a href="#_graph_system_providers_6">Graph System Providers</a></li> +<li><a href="#_graph_system_providers_5">Graph System Providers</a></li> </ul> </li> </ul> </li> <li><a href="#_tinkerpop_3_6_1">TinkerPop 3.6.1</a> <ul class="sectlevel2"> -<li><a href="#_upgrading_for_users_11">Upgrading for Users</a> +<li><a href="#_upgrading_for_users_10">Upgrading for Users</a> <ul class="sectlevel3"> <li><a href="#_graphbinary_default_serialization">GraphBinary Default Serialization</a></li> </ul> @@ -1003,7 +967,7 @@ table.CodeRay td.code{padding:0 0 0 .75e </li> <li><a href="#_tinkerpop_3_6_0_2">TinkerPop 3.6.0</a> <ul class="sectlevel2"> -<li><a href="#_upgrading_for_users_12">Upgrading for Users</a> +<li><a href="#_upgrading_for_users_11">Upgrading for Users</a> <ul class="sectlevel3"> <li><a href="#_element_step">element() Step</a></li> <li><a href="#_mergev_and_mergee">mergeV() and mergeE()</a></li> @@ -1023,9 +987,9 @@ table.CodeRay td.code{padding:0 0 0 .75e <li><a href="#_property_with_map"><code>property()</code> with Map</a></li> </ul> </li> -<li><a href="#_upgrading_for_providers_8">Upgrading for Providers</a> +<li><a href="#_upgrading_for_providers_7">Upgrading for Providers</a> <ul class="sectlevel3"> -<li><a href="#_graph_system_providers_7">Graph System Providers</a></li> +<li><a href="#_graph_system_providers_6">Graph System Providers</a></li> </ul> </li> </ul> @@ -1037,7 +1001,7 @@ table.CodeRay td.code{padding:0 0 0 .75e <li><a href="#_tinkerpop_3_5_8">TinkerPop 3.5.8</a></li> <li><a href="#_tinkerpop_3_5_7">TinkerPop 3.5.7</a> <ul class="sectlevel2"> -<li><a href="#_upgrading_for_users_13">Upgrading for Users</a> +<li><a href="#_upgrading_for_users_12">Upgrading for Users</a> <ul class="sectlevel3"> <li><a href="#_runtime_version_upgrades_2">Runtime Version Upgrades</a></li> <li><a href="#_graphson_max_token_lengths">GraphSON max token lengths</a></li> @@ -1048,23 +1012,23 @@ table.CodeRay td.code{padding:0 0 0 .75e </li> <li><a href="#_tinkerpop_3_5_6">TinkerPop 3.5.6</a> <ul class="sectlevel2"> -<li><a href="#_upgrading_for_users_14">Upgrading for Users</a> +<li><a href="#_upgrading_for_users_13">Upgrading for Users</a> <ul class="sectlevel3"> <li><a href="#_deprecation_warning_for_node_10_and_go_1_17">Deprecation Warning for Node 10 and Go 1.17</a></li> <li><a href="#_arm64_support_for_gremlin_server_docker_image">ARM64 Support for Gremlin Server Docker Image</a></li> <li><a href="#_performance_improvements">Performance Improvements</a></li> </ul> </li> -<li><a href="#_upgrading_for_providers_9">Upgrading for Providers</a> +<li><a href="#_upgrading_for_providers_8">Upgrading for Providers</a> <ul class="sectlevel3"> -<li><a href="#_graph_system_providers_8">Graph System Providers</a></li> +<li><a href="#_graph_system_providers_7">Graph System Providers</a></li> </ul> </li> </ul> </li> <li><a href="#_tinkerpop_3_5_5">TinkerPop 3.5.5</a> <ul class="sectlevel2"> -<li><a href="#_upgrading_for_users_15">Upgrading for Users</a> +<li><a href="#_upgrading_for_users_14">Upgrading for Users</a> <ul class="sectlevel3"> <li><a href="#_gremlin_net_add_logging">Gremlin.NET: Add logging</a></li> <li><a href="#_gremlin_driver_host_availability">gremlin-driver Host Availability</a></li> @@ -1076,7 +1040,7 @@ table.CodeRay td.code{padding:0 0 0 .75e </li> <li><a href="#_tinkerpop_3_5_4">TinkerPop 3.5.4</a> <ul class="sectlevel2"> -<li><a href="#_upgrading_for_users_16">Upgrading for Users</a> +<li><a href="#_upgrading_for_users_15">Upgrading for Users</a> <ul class="sectlevel3"> <li><a href="#_sparkioutil_utility">SparkIOUtil utility</a></li> <li><a href="#_gremlin_go">Gremlin-Go</a></li> @@ -1088,7 +1052,7 @@ table.CodeRay td.code{padding:0 0 0 .75e </li> <li><a href="#_tinkerpop_3_5_3">TinkerPop 3.5.3</a> <ul class="sectlevel2"> -<li><a href="#_upgrading_for_users_17">Upgrading for Users</a> +<li><a href="#_upgrading_for_users_16">Upgrading for Users</a> <ul class="sectlevel3"> <li><a href="#_net_websocket_compression_support">.NET WebSocket Compression Support</a></li> <li><a href="#_net_translator_to_groovy">.NET: Translator to Groovy</a></li> @@ -1098,7 +1062,7 @@ table.CodeRay td.code{padding:0 0 0 .75e </li> <li><a href="#_tinkerpop_3_5_2">TinkerPop 3.5.2</a> <ul class="sectlevel2"> -<li><a href="#_upgrading_for_users_18">Upgrading for Users</a> +<li><a href="#_upgrading_for_users_17">Upgrading for Users</a> <ul class="sectlevel3"> <li><a href="#_tx_in_net_and_python">Tx() in .NET and Python</a></li> <li><a href="#_datetime">datetime()</a></li> @@ -1112,7 +1076,7 @@ table.CodeRay td.code{padding:0 0 0 .75e </li> <li><a href="#_tinkerpop_3_5_1">TinkerPop 3.5.1</a> <ul class="sectlevel2"> -<li><a href="#_upgrading_for_users_19">Upgrading for Users</a> +<li><a href="#_upgrading_for_users_18">Upgrading for Users</a> <ul class="sectlevel3"> <li><a href="#_tx_in_javascript">tx() in Javascript</a></li> <li><a href="#_gremlint_library">Gremlint Library</a></li> @@ -1123,7 +1087,7 @@ table.CodeRay td.code{padding:0 0 0 .75e </li> <li><a href="#_tinkerpop_3_5_0_2">TinkerPop 3.5.0</a> <ul class="sectlevel2"> -<li><a href="#_upgrading_for_users_20">Upgrading for Users</a> +<li><a href="#_upgrading_for_users_19">Upgrading for Users</a> <ul class="sectlevel3"> <li><a href="#_host_language_runtimes">Host Language Runtimes</a></li> <li><a href="#_gremlint">Gremlint</a></li> @@ -1145,10 +1109,10 @@ table.CodeRay td.code{padding:0 0 0 .75e <li><a href="#_deprecation_removal">Deprecation Removal</a></li> </ul> </li> -<li><a href="#_upgrading_for_providers_10">Upgrading for Providers</a> +<li><a href="#_upgrading_for_providers_9">Upgrading for Providers</a> <ul class="sectlevel3"> -<li><a href="#_graph_system_providers_9">Graph System Providers</a></li> -<li><a href="#_graph_driver_providers_4">Graph Driver Providers</a></li> +<li><a href="#_graph_system_providers_8">Graph System Providers</a></li> +<li><a href="#_graph_driver_providers_3">Graph Driver Providers</a></li> </ul> </li> </ul> @@ -1161,7 +1125,7 @@ table.CodeRay td.code{padding:0 0 0 .75e <li><a href="#_tinkerpop_3_4_12">TinkerPop 3.4.12</a></li> <li><a href="#_tinkerpop_3_4_11">TinkerPop 3.4.11</a> <ul class="sectlevel2"> -<li><a href="#_upgrading_for_users_21">Upgrading for Users</a> +<li><a href="#_upgrading_for_users_20">Upgrading for Users</a> <ul class="sectlevel3"> <li><a href="#_barrier_control">barrier() Control</a></li> </ul> @@ -1170,7 +1134,7 @@ table.CodeRay td.code{padding:0 0 0 .75e </li> <li><a href="#_tinkerpop_3_4_10">TinkerPop 3.4.10</a> <ul class="sectlevel2"> -<li><a href="#_upgrading_for_users_22">Upgrading for Users</a> +<li><a href="#_upgrading_for_users_21">Upgrading for Users</a> <ul class="sectlevel3"> <li><a href="#_python_timeout_issue">Python Timeout Issue</a></li> </ul> @@ -1179,7 +1143,7 @@ table.CodeRay td.code{padding:0 0 0 .75e </li> <li><a href="#_tinkerpop_3_4_9">TinkerPop 3.4.9</a> <ul class="sectlevel2"> -<li><a href="#_upgrading_for_users_23">Upgrading for Users</a> +<li><a href="#_upgrading_for_users_22">Upgrading for Users</a> <ul class="sectlevel3"> <li><a href="#_translator_implementations">Translator Implementations</a></li> <li><a href="#_bytecode_command_improvements">Bytecode Command Improvements</a></li> @@ -1193,16 +1157,16 @@ table.CodeRay td.code{padding:0 0 0 .75e <li><a href="#_lambdas_in_gremlin_javascript">Lambdas in gremlin-javascript</a></li> </ul> </li> -<li><a href="#_upgrading_for_providers_11">Upgrading for Providers</a> +<li><a href="#_upgrading_for_providers_10">Upgrading for Providers</a> <ul class="sectlevel3"> -<li><a href="#_graph_system_providers_10">Graph System Providers</a></li> +<li><a href="#_graph_system_providers_9">Graph System Providers</a></li> </ul> </li> </ul> </li> <li><a href="#_tinkerpop_3_4_8">TinkerPop 3.4.8</a> <ul class="sectlevel2"> -<li><a href="#_upgrading_for_users_24">Upgrading for Users</a> +<li><a href="#_upgrading_for_users_23">Upgrading for Users</a> <ul class="sectlevel3"> <li><a href="#_gremlin_net_automatic_reconnect">Gremlin.NET: Automatic Reconnect</a></li> </ul> @@ -1211,7 +1175,7 @@ table.CodeRay td.code{padding:0 0 0 .75e </li> <li><a href="#_tinkerpop_3_4_7">TinkerPop 3.4.7</a> <ul class="sectlevel2"> -<li><a href="#_upgrading_for_users_25">Upgrading for Users</a> +<li><a href="#_upgrading_for_users_24">Upgrading for Users</a> <ul class="sectlevel3"> <li><a href="#_clear_screen_command">Clear Screen Command</a></li> </ul> @@ -1220,7 +1184,7 @@ table.CodeRay td.code{padding:0 0 0 .75e </li> <li><a href="#_tinkerpop_3_4_6">TinkerPop 3.4.6</a> <ul class="sectlevel2"> -<li><a href="#_upgrading_for_users_26">Upgrading for Users</a> +<li><a href="#_upgrading_for_users_25">Upgrading for Users</a> <ul class="sectlevel3"> <li><a href="#_drop_properties">drop() Properties</a></li> </ul> @@ -1229,23 +1193,23 @@ table.CodeRay td.code{padding:0 0 0 .75e </li> <li><a href="#_tinkerpop_3_4_5">TinkerPop 3.4.5</a> <ul class="sectlevel2"> -<li><a href="#_upgrading_for_users_27">Upgrading for Users</a> +<li><a href="#_upgrading_for_users_26">Upgrading for Users</a> <ul class="sectlevel3"> <li><a href="#_bystring_modulator">by(String) Modulator</a></li> <li><a href="#_haskey_step_and_hasvalue_step">hasKey() Step and hasValue() Step</a></li> <li><a href="#_properties_equality">Properties Equality</a></li> </ul> </li> -<li><a href="#_upgrading_for_providers_12">Upgrading for Providers</a> +<li><a href="#_upgrading_for_providers_11">Upgrading for Providers</a> <ul class="sectlevel3"> -<li><a href="#_graph_driver_providers_5">Graph Driver Providers</a></li> +<li><a href="#_graph_driver_providers_4">Graph Driver Providers</a></li> </ul> </li> </ul> </li> <li><a href="#_tinkerpop_3_4_4">TinkerPop 3.4.4</a> <ul class="sectlevel2"> -<li><a href="#_upgrading_for_users_28">Upgrading for Users</a> +<li><a href="#_upgrading_for_users_27">Upgrading for Users</a> <ul class="sectlevel3"> <li><a href="#_python_graphbinary">Python GraphBinary</a></li> <li><a href="#_elementmap_step">elementMap() Step</a></li> @@ -1255,43 +1219,43 @@ table.CodeRay td.code{padding:0 0 0 .75e </li> <li><a href="#_tinkerpop_3_4_3">TinkerPop 3.4.3</a> <ul class="sectlevel2"> -<li><a href="#_upgrading_for_users_29">Upgrading for Users</a> +<li><a href="#_upgrading_for_users_28">Upgrading for Users</a> <ul class="sectlevel3"> <li><a href="#_deprecated_store">Deprecated store()</a></li> <li><a href="#_deprecate_gryo_in_gremlin_server">Deprecate Gryo in Gremlin Server</a></li> </ul> </li> -<li><a href="#_upgrading_for_providers_13">Upgrading for Providers</a> +<li><a href="#_upgrading_for_providers_12">Upgrading for Providers</a> <ul class="sectlevel3"> -<li><a href="#_graph_driver_providers_6">Graph Driver Providers</a></li> +<li><a href="#_graph_driver_providers_5">Graph Driver Providers</a></li> </ul> </li> </ul> </li> <li><a href="#_tinkerpop_3_4_2">TinkerPop 3.4.2</a> <ul class="sectlevel2"> -<li><a href="#_upgrading_for_users_30">Upgrading for Users</a> +<li><a href="#_upgrading_for_users_29">Upgrading for Users</a> <ul class="sectlevel3"> <li><a href="#_per_request_options_2">Per Request Options</a></li> <li><a href="#_gremlin_console_timeout">Gremlin Console Timeout</a></li> </ul> </li> -<li><a href="#_upgrading_for_providers_14">Upgrading for Providers</a> +<li><a href="#_upgrading_for_providers_13">Upgrading for Providers</a> <ul class="sectlevel3"> -<li><a href="#_graph_system_providers_11">Graph System Providers</a></li> -<li><a href="#_graph_driver_providers_7">Graph Driver Providers</a></li> +<li><a href="#_graph_system_providers_10">Graph System Providers</a></li> +<li><a href="#_graph_driver_providers_6">Graph Driver Providers</a></li> </ul> </li> </ul> </li> <li><a href="#_tinkerpop_3_4_1">TinkerPop 3.4.1</a> <ul class="sectlevel2"> -<li><a href="#_upgrading_for_users_31">Upgrading for Users</a> +<li><a href="#_upgrading_for_users_30">Upgrading for Users</a> <ul class="sectlevel3"> <li><a href="#_mix_sparql_and_gremlin">Mix SPARQL and Gremlin</a></li> </ul> </li> -<li><a href="#_upgrading_for_providers_15">Upgrading for Providers</a> +<li><a href="#_upgrading_for_providers_14">Upgrading for Providers</a> <ul class="sectlevel3"> <li><a href="#_graph_database_providers">Graph Database Providers</a></li> </ul> @@ -1300,7 +1264,7 @@ table.CodeRay td.code{padding:0 0 0 .75e </li> <li><a href="#_tinkerpop_3_4_0_2">TinkerPop 3.4.0</a> <ul class="sectlevel2"> -<li><a href="#_upgrading_for_users_32">Upgrading for Users</a> +<li><a href="#_upgrading_for_users_31">Upgrading for Users</a> <ul class="sectlevel3"> <li><a href="#_sparql_gremlin">sparql-gremlin</a></li> <li><a href="#_gremlin_net_driver_improvements">Gremlin.NET Driver Improvements</a></li> @@ -1327,10 +1291,10 @@ table.CodeRay td.code{padding:0 0 0 .75e <li><a href="#_deprecation_and_removal">Deprecation and Removal</a></li> </ul> </li> -<li><a href="#_upgrading_for_providers_16">Upgrading for Providers</a> +<li><a href="#_upgrading_for_providers_15">Upgrading for Providers</a> <ul class="sectlevel3"> <li><a href="#_graph_database_providers_2">Graph Database Providers</a></li> -<li><a href="#_graph_driver_providers_8">Graph Driver Providers</a></li> +<li><a href="#_graph_driver_providers_7">Graph Driver Providers</a></li> </ul> </li> </ul> @@ -1341,13 +1305,13 @@ table.CodeRay td.code{padding:0 0 0 .75e <ul class="sectlevel1"> <li><a href="#_tinkerpop_3_3_11">TinkerPop 3.3.11</a> <ul class="sectlevel2"> -<li><a href="#_upgrading_for_users_33">Upgrading for Users</a> +<li><a href="#_upgrading_for_users_32">Upgrading for Users</a> <ul class="sectlevel3"> <li><a href="#_glv_sessions">GLV Sessions</a></li> <li><a href="#_deprecate_maxwaitforsessionclose">Deprecate maxWaitForSessionClose</a></li> </ul> </li> -<li><a href="#_upgrading_for_providers_17">Upgrading for Providers</a> +<li><a href="#_upgrading_for_providers_16">Upgrading for Providers</a> <ul class="sectlevel3"> <li><a href="#_gremlin_driver_providers">Gremlin Driver Providers</a></li> </ul> @@ -1356,7 +1320,7 @@ table.CodeRay td.code{padding:0 0 0 .75e </li> <li><a href="#_tinkerpop_3_3_10">TinkerPop 3.3.10</a> <ul class="sectlevel2"> -<li><a href="#_upgrading_for_users_34">Upgrading for Users</a> +<li><a href="#_upgrading_for_users_33">Upgrading for Users</a> <ul class="sectlevel3"> <li><a href="#_traversal_clone">Traversal Clone</a></li> <li><a href="#_deprecated_jython_support">Deprecated Jython Support</a></li> @@ -1366,7 +1330,7 @@ table.CodeRay td.code{padding:0 0 0 .75e </li> <li><a href="#_tinkerpop_3_3_9">TinkerPop 3.3.9</a> <ul class="sectlevel2"> -<li><a href="#_upgrading_for_users_35">Upgrading for Users</a> +<li><a href="#_upgrading_for_users_34">Upgrading for Users</a> <ul class="sectlevel3"> <li><a href="#_reservedkeysverificationstrategy">ReservedKeysVerificationStrategy</a></li> <li><a href="#_javascript_responseerror">Javascript ResponseError</a></li> @@ -1378,7 +1342,7 @@ table.CodeRay td.code{padding:0 0 0 .75e </li> <li><a href="#_tinkerpop_3_3_8">TinkerPop 3.3.8</a> <ul class="sectlevel2"> -<li><a href="#_upgrading_for_users_36">Upgrading for Users</a> +<li><a href="#_upgrading_for_users_35">Upgrading for Users</a> <ul class="sectlevel3"> <li><a href="#_branch_steps_accept_predicates_and_traversals">Branch Steps Accept Predicates and Traversals</a></li> <li><a href="#_python_datetime">Python DateTime</a></li> @@ -1392,14 +1356,14 @@ table.CodeRay td.code{padding:0 0 0 .75e </li> <li><a href="#_tinkerpop_3_3_7">TinkerPop 3.3.7</a> <ul class="sectlevel2"> -<li><a href="#_upgrading_for_users_37">Upgrading for Users</a> +<li><a href="#_upgrading_for_users_36">Upgrading for Users</a> <ul class="sectlevel3"> <li><a href="#_javascript_dsl_pattern">JavaScript DSL Pattern</a></li> <li><a href="#_gremlin_console_interrupt">Gremlin Console Interrupt</a></li> <li><a href="#_removed_gperfutils_dependency">Removed gperfutils Dependency</a></li> </ul> </li> -<li><a href="#_upgrading_for_providers_18">Upgrading for Providers</a> +<li><a href="#_upgrading_for_providers_17">Upgrading for Providers</a> <ul class="sectlevel3"> <li><a href="#_graph_database_providers_3">Graph Database Providers</a></li> </ul> @@ -1408,7 +1372,7 @@ table.CodeRay td.code{padding:0 0 0 .75e </li> <li><a href="#_tinkerpop_3_3_6">TinkerPop 3.3.6</a> <ul class="sectlevel2"> -<li><a href="#_upgrading_for_users_38">Upgrading for Users</a> +<li><a href="#_upgrading_for_users_37">Upgrading for Users</a> <ul class="sectlevel3"> <li><a href="#_anti_patterns_documentation">Anti-Patterns Documentation</a></li> </ul> @@ -1417,7 +1381,7 @@ table.CodeRay td.code{padding:0 0 0 .75e </li> <li><a href="#_tinkerpop_3_3_5">TinkerPop 3.3.5</a> <ul class="sectlevel2"> -<li><a href="#_upgrading_for_users_39">Upgrading for Users</a> +<li><a href="#_upgrading_for_users_38">Upgrading for Users</a> <ul class="sectlevel3"> <li><a href="#_anonymoustraversalsource">AnonymousTraversalSource</a></li> <li><a href="#_bytecode_command">Bytecode Command</a></li> @@ -1425,7 +1389,7 @@ table.CodeRay td.code{padding:0 0 0 .75e <li><a href="#_rangestep_optimizing_strategy">RangeStep Optimizing Strategy</a></li> </ul> </li> -<li><a href="#_upgrading_for_providers_19">Upgrading for Providers</a> +<li><a href="#_upgrading_for_providers_18">Upgrading for Providers</a> <ul class="sectlevel3"> <li><a href="#_graph_database_providers_4">Graph Database Providers</a></li> </ul> @@ -1434,7 +1398,7 @@ table.CodeRay td.code{padding:0 0 0 .75e </li> <li><a href="#_tinkerpop_3_3_4">TinkerPop 3.3.4</a> <ul class="sectlevel2"> -<li><a href="#_upgrading_for_users_40">Upgrading for Users</a> +<li><a href="#_upgrading_for_users_39">Upgrading for Users</a> <ul class="sectlevel3"> <li><a href="#_introducing_order_asc_and_order_desc">Introducing Order.asc and Order.desc</a></li> <li><a href="#_timedinterrupt">TimedInterrupt</a></li> @@ -1444,7 +1408,7 @@ table.CodeRay td.code{padding:0 0 0 .75e </li> <li><a href="#_tinkerpop_3_3_3">TinkerPop 3.3.3</a> <ul class="sectlevel2"> -<li><a href="#_upgrading_for_users_41">Upgrading for Users</a> +<li><a href="#_upgrading_for_users_40">Upgrading for Users</a> <ul class="sectlevel3"> <li><a href="#_credential_dsl_changes">Credential DSL Changes</a></li> </ul> @@ -1453,7 +1417,7 @@ table.CodeRay td.code{padding:0 0 0 .75e </li> <li><a href="#_tinkerpop_3_3_2">TinkerPop 3.3.2</a> <ul class="sectlevel2"> -<li><a href="#_upgrading_for_users_42">Upgrading for Users</a> +<li><a href="#_upgrading_for_users_41">Upgrading for Users</a> <ul class="sectlevel3"> <li><a href="#_gremlin_python_sets">Gremlin Python Sets</a></li> </ul> @@ -1462,7 +1426,7 @@ table.CodeRay td.code{padding:0 0 0 .75e </li> <li><a href="#_tinkerpop_3_3_1">TinkerPop 3.3.1</a> <ul class="sectlevel2"> -<li><a href="#_upgrading_for_users_43">Upgrading for Users</a> +<li><a href="#_upgrading_for_users_42">Upgrading for Users</a> <ul class="sectlevel3"> <li><a href="#_gremlin_python_path">Gremlin Python path()</a></li> <li><a href="#_added_math_step_for_scientific_traversal_computing">Added <code>math()</code>-step for Scientific Traversal Computing</a></li> @@ -1473,7 +1437,7 @@ table.CodeRay td.code{padding:0 0 0 .75e <li><a href="#_upgrade_neo4j">Upgrade Neo4j</a></li> </ul> </li> -<li><a href="#_upgrading_for_providers_20">Upgrading for Providers</a> +<li><a href="#_upgrading_for_providers_19">Upgrading for Providers</a> <ul class="sectlevel3"> <li><a href="#_graph_database_providers_5">Graph Database Providers</a></li> </ul> @@ -1482,7 +1446,7 @@ table.CodeRay td.code{padding:0 0 0 .75e </li> <li><a href="#_tinkerpop_3_3_0_2">TinkerPop 3.3.0</a> <ul class="sectlevel2"> -<li><a href="#_upgrading_for_users_44">Upgrading for Users</a> +<li><a href="#_upgrading_for_users_43">Upgrading for Users</a> <ul class="sectlevel3"> <li><a href="#_packaged_data_files">Packaged Data Files</a></li> <li><a href="#_graphtraversal_has_methods_re_organized">GraphTraversal Has-Methods Re-Organized</a></li> @@ -1501,9 +1465,9 @@ table.CodeRay td.code{padding:0 0 0 .75e <li><a href="#_scriptinputformat">ScriptInputFormat</a></li> </ul> </li> -<li><a href="#_upgrading_for_providers_21">Upgrading for Providers</a> +<li><a href="#_upgrading_for_providers_20">Upgrading for Providers</a> <ul class="sectlevel3"> -<li><a href="#_graph_system_providers_12">Graph System Providers</a></li> +<li><a href="#_graph_system_providers_11">Graph System Providers</a></li> <li><a href="#_graph_database_providers_6">Graph Database Providers</a></li> <li><a href="#_driver_providers">Driver Providers</a></li> </ul> @@ -1517,7 +1481,7 @@ table.CodeRay td.code{padding:0 0 0 .75e <li><a href="#_tinkerpop_3_2_11">TinkerPop 3.2.11</a></li> <li><a href="#_tinkerpop_3_2_10">TinkerPop 3.2.10</a> <ul class="sectlevel2"> -<li><a href="#_upgrading_for_users_45">Upgrading for Users</a> +<li><a href="#_upgrading_for_users_44">Upgrading for Users</a> <ul class="sectlevel3"> <li><a href="#_sasl_in_gremlin_javascript">SASL in Gremlin-Javascript</a></li> <li><a href="#_ssl_security">SSL Security</a></li> @@ -1528,7 +1492,7 @@ table.CodeRay td.code{padding:0 0 0 .75e <li><a href="#_gremlin_javascript_script_submission">Gremlin Javascript Script Submission</a></li> </ul> </li> -<li><a href="#_upgrading_for_providers_22">Upgrading for Providers</a> +<li><a href="#_upgrading_for_providers_21">Upgrading for Providers</a> <ul class="sectlevel3"> <li><a href="#_graph_database_providers_7">Graph Database Providers</a></li> </ul> @@ -1537,7 +1501,7 @@ table.CodeRay td.code{padding:0 0 0 .75e </li> <li><a href="#_tinkerpop_3_2_9">TinkerPop 3.2.9</a> <ul class="sectlevel2"> -<li><a href="#_upgrading_for_users_46">Upgrading for Users</a> +<li><a href="#_upgrading_for_users_45">Upgrading for Users</a> <ul class="sectlevel3"> <li><a href="#_lambda_construction">Lambda Construction</a></li> </ul> @@ -1546,7 +1510,7 @@ table.CodeRay td.code{padding:0 0 0 .75e </li> <li><a href="#_tinkerpop_3_2_8">TinkerPop 3.2.8</a> <ul class="sectlevel2"> -<li><a href="#_upgrading_for_users_47">Upgrading for Users</a> +<li><a href="#_upgrading_for_users_46">Upgrading for Users</a> <ul class="sectlevel3"> <li><a href="#_improved_connection_monitoring">Improved Connection Monitoring</a></li> <li><a href="#_gremlin_net_lambdas">Gremlin.Net Lambdas</a></li> @@ -1554,16 +1518,16 @@ table.CodeRay td.code{padding:0 0 0 .75e <li><a href="#_gremlin_net_traversal_predicate_classes_merged">Gremlin.Net: Traversal Predicate Classes Merged</a></li> </ul> </li> -<li><a href="#_upgrading_for_providers_23">Upgrading for Providers</a> +<li><a href="#_upgrading_for_providers_22">Upgrading for Providers</a> <ul class="sectlevel3"> -<li><a href="#_graph_system_providers_13">Graph System Providers</a></li> +<li><a href="#_graph_system_providers_12">Graph System Providers</a></li> </ul> </li> </ul> </li> <li><a href="#_tinkerpop_3_2_7">TinkerPop 3.2.7</a> <ul class="sectlevel2"> -<li><a href="#_upgrading_for_users_48">Upgrading for Users</a> +<li><a href="#_upgrading_for_users_47">Upgrading for Users</a> <ul class="sectlevel3"> <li><a href="#_gremlin_python_core_types">Gremlin-Python Core Types</a></li> <li><a href="#_eventstrategy_detachment">EventStrategy Detachment</a></li> @@ -1576,7 +1540,7 @@ table.CodeRay td.code{padding:0 0 0 .75e <li><a href="#_mutationlistener_changes">MutationListener Changes</a></li> </ul> </li> -<li><a href="#_upgrading_for_providers_24">Upgrading for Providers</a> +<li><a href="#_upgrading_for_providers_23">Upgrading for Providers</a> <ul class="sectlevel3"> <li><a href="#_direction_both_requires_duplication_of_self_edges">Direction.BOTH Requires Duplication of Self-Edges</a></li> </ul> @@ -1585,13 +1549,13 @@ table.CodeRay td.code{padding:0 0 0 .75e </li> <li><a href="#_tinkerpop_3_2_6">TinkerPop 3.2.6</a> <ul class="sectlevel2"> -<li><a href="#_upgrading_for_users_49">Upgrading for Users</a> +<li><a href="#_upgrading_for_users_48">Upgrading for Users</a> <ul class="sectlevel3"> <li><a href="#_deprecated_usemapperfromgraph">Deprecated useMapperFromGraph</a></li> <li><a href="#_wsandhttpchannelizer">WsAndHttpChannelizer</a></li> </ul> </li> -<li><a href="#_upgrading_for_providers_25">Upgrading for Providers</a> +<li><a href="#_upgrading_for_providers_24">Upgrading for Providers</a> <ul class="sectlevel3"> <li><a href="#_referencevertex_label">ReferenceVertex Label</a></li> </ul> @@ -1600,7 +1564,7 @@ table.CodeRay td.code{padding:0 0 0 .75e </li> <li><a href="#_tinkerpop_3_2_5">TinkerPop 3.2.5</a> <ul class="sectlevel2"> -<li><a href="#_upgrading_for_users_50">Upgrading for Users</a> +<li><a href="#_upgrading_for_users_49">Upgrading for Users</a> <ul class="sectlevel3"> <li><a href="#_dsl_support">DSL Support</a></li> <li><a href="#_graphson_path_serialization">GraphSON Path Serialization</a></li> @@ -1614,7 +1578,7 @@ table.CodeRay td.code{padding:0 0 0 .75e <li><a href="#_gremlin_python_driver">Gremlin-Python Driver</a></li> </ul> </li> -<li><a href="#_upgrading_for_providers_26">Upgrading for Providers</a> +<li><a href="#_upgrading_for_providers_25">Upgrading for Providers</a> <ul class="sectlevel3"> <li><a href="#_graph_database_providers_8">Graph Database Providers</a></li> </ul> @@ -1623,7 +1587,7 @@ table.CodeRay td.code{padding:0 0 0 .75e </li> <li><a href="#_tinkerpop_3_2_4">TinkerPop 3.2.4</a> <ul class="sectlevel2"> -<li><a href="#_upgrading_for_users_51">Upgrading for Users</a> +<li><a href="#_upgrading_for_users_50">Upgrading for Users</a> <ul class="sectlevel3"> <li><a href="#_tinkergraph_deserialization">TinkerGraph Deserialization</a></li> <li><a href="#_traversal_promises">Traversal Promises</a></li> @@ -1633,7 +1597,7 @@ table.CodeRay td.code{padding:0 0 0 .75e <li><a href="#_ssl_client_authentication">SSL Client Authentication</a></li> </ul> </li> -<li><a href="#_upgrading_for_providers_27">Upgrading for Providers</a> +<li><a href="#_upgrading_for_providers_26">Upgrading for Providers</a> <ul class="sectlevel3"> <li><a href="#_graph_database_providers_9">Graph Database Providers</a></li> <li><a href="#_drivers_providers">Drivers Providers</a></li> @@ -1643,7 +1607,7 @@ table.CodeRay td.code{padding:0 0 0 .75e </li> <li><a href="#_tinkerpop_3_2_3">TinkerPop 3.2.3</a> <ul class="sectlevel2"> -<li><a href="#_upgrading_for_users_52">Upgrading for Users</a> +<li><a href="#_upgrading_for_users_51">Upgrading for Users</a> <ul class="sectlevel3"> <li><a href="#_renamed_null_result_preference">Renamed Null Result Preference</a></li> <li><a href="#_java_driver_keep_alive">Java Driver Keep-Alive</a></li> @@ -1654,16 +1618,16 @@ table.CodeRay td.code{padding:0 0 0 .75e <li><a href="#_io_reference_documentation">IO Reference Documentation</a></li> </ul> </li> -<li><a href="#_upgrading_for_providers_28">Upgrading for Providers</a> +<li><a href="#_upgrading_for_providers_27">Upgrading for Providers</a> <ul class="sectlevel3"> -<li><a href="#_graph_system_providers_14">Graph System Providers</a></li> +<li><a href="#_graph_system_providers_13">Graph System Providers</a></li> </ul> </li> </ul> </li> <li><a href="#_tinkerpop_3_2_2">TinkerPop 3.2.2</a> <ul class="sectlevel2"> -<li><a href="#_upgrading_for_users_53">Upgrading for Users</a> +<li><a href="#_upgrading_for_users_52">Upgrading for Users</a> <ul class="sectlevel3"> <li><a href="#_graphson_2_0">GraphSON 2.0</a></li> <li><a href="#_log4j_dependencies">Log4j Dependencies</a></li> @@ -1672,9 +1636,9 @@ table.CodeRay td.code{padding:0 0 0 .75e <li><a href="#_rest_api_renamed_to_http_api">REST API Renamed to HTTP API</a></li> </ul> </li> -<li><a href="#_upgrading_for_providers_29">Upgrading for Providers</a> +<li><a href="#_upgrading_for_providers_28">Upgrading for Providers</a> <ul class="sectlevel3"> -<li><a href="#_graph_system_providers_15">Graph System Providers</a></li> +<li><a href="#_graph_system_providers_14">Graph System Providers</a></li> <li><a href="#_drivers_providers_2">Drivers Providers</a></li> </ul> </li> @@ -1682,7 +1646,7 @@ table.CodeRay td.code{padding:0 0 0 .75e </li> <li><a href="#_tinkerpop_3_2_1">TinkerPop 3.2.1</a> <ul class="sectlevel2"> -<li><a href="#_upgrading_for_users_54">Upgrading for Users</a> +<li><a href="#_upgrading_for_users_53">Upgrading for Users</a> <ul class="sectlevel3"> <li><a href="#_gephi_plugin">Gephi Plugin</a></li> <li><a href="#_gryomapper_construction">GryoMapper Construction</a></li> @@ -1691,9 +1655,9 @@ table.CodeRay td.code{padding:0 0 0 .75e <li><a href="#_gremlin_console_flags">Gremlin Console Flags</a></li> </ul> </li> -<li><a href="#_upgrading_for_providers_30">Upgrading for Providers</a> +<li><a href="#_upgrading_for_providers_29">Upgrading for Providers</a> <ul class="sectlevel3"> -<li><a href="#_graph_system_providers_16">Graph System Providers</a></li> +<li><a href="#_graph_system_providers_15">Graph System Providers</a></li> <li><a href="#_graph_database_providers_10">Graph Database Providers</a></li> <li><a href="#_graph_language_providers">Graph Language Providers</a></li> </ul> @@ -1702,7 +1666,7 @@ table.CodeRay td.code{padding:0 0 0 .75e </li> <li><a href="#_tinkerpop_3_2_0_2">TinkerPop 3.2.0</a> <ul class="sectlevel2"> -<li><a href="#_upgrading_for_users_55">Upgrading for Users</a> +<li><a href="#_upgrading_for_users_54">Upgrading for Users</a> <ul class="sectlevel3"> <li><a href="#_hadoop_filesystem_variable">Hadoop FileSystem Variable</a></li> <li><a href="#_hadoop_configurations">Hadoop Configurations</a></li> @@ -1714,9 +1678,9 @@ table.CodeRay td.code{padding:0 0 0 .75e <li><a href="#_remotegraph">RemoteGraph</a></li> </ul> </li> -<li><a href="#_upgrading_for_providers_31">Upgrading for Providers</a> +<li><a href="#_upgrading_for_providers_30">Upgrading for Providers</a> <ul class="sectlevel3"> -<li><a href="#_graph_system_providers_17">Graph System Providers</a></li> +<li><a href="#_graph_system_providers_16">Graph System Providers</a></li> <li><a href="#_graph_processor_providers">Graph Processor Providers</a></li> <li><a href="#_graph_language_providers_2">Graph Language Providers</a></li> </ul> @@ -1730,7 +1694,7 @@ table.CodeRay td.code{padding:0 0 0 .75e <li><a href="#_tinkerpop_3_1_8">TinkerPop 3.1.8</a></li> <li><a href="#_tinkerpop_3_1_7">TinkerPop 3.1.7</a> <ul class="sectlevel2"> -<li><a href="#_upgrading_for_users_56">Upgrading for Users</a> +<li><a href="#_upgrading_for_users_55">Upgrading for Users</a> <ul class="sectlevel3"> <li><a href="#_graphml_xslt">GraphML XSLT</a></li> </ul> @@ -1739,7 +1703,7 @@ table.CodeRay td.code{padding:0 0 0 .75e </li> <li><a href="#_tinkerpop_3_1_6">TinkerPop 3.1.6</a> <ul class="sectlevel2"> -<li><a href="#_upgrading_for_providers_32">Upgrading for Providers</a> +<li><a href="#_upgrading_for_providers_31">Upgrading for Providers</a> <ul class="sectlevel3"> <li><a href="#_driver_providers_2">Driver Providers</a></li> </ul> @@ -1748,7 +1712,7 @@ table.CodeRay td.code{padding:0 0 0 .75e </li> <li><a href="#_tinkerpop_3_1_5">TinkerPop 3.1.5</a> <ul class="sectlevel2"> -<li><a href="#_upgrading_for_users_57">Upgrading for Users</a> +<li><a href="#_upgrading_for_users_56">Upgrading for Users</a> <ul class="sectlevel3"> <li><a href="#_java_driver_and_close">Java Driver and close()</a></li> </ul> @@ -1757,7 +1721,7 @@ table.CodeRay td.code{padding:0 0 0 .75e </li> <li><a href="#_tinkerpop_3_1_4">TinkerPop 3.1.4</a> <ul class="sectlevel2"> -<li><a href="#_upgrading_for_users_58">Upgrading for Users</a> +<li><a href="#_upgrading_for_users_57">Upgrading for Users</a> <ul class="sectlevel3"> <li><a href="#_gremlin_server_workers">Gremlin Server Workers</a></li> </ul> @@ -1766,14 +1730,14 @@ table.CodeRay td.code{padding:0 0 0 .75e </li> <li><a href="#_tinkerpop_3_1_3">TinkerPop 3.1.3</a> <ul class="sectlevel2"> -<li><a href="#_upgrading_for_users_59">Upgrading for Users</a> +<li><a href="#_upgrading_for_users_58">Upgrading for Users</a> <ul class="sectlevel3"> <li><a href="#_reserved_gremlin_server_keys">Reserved Gremlin Server Keys</a></li> <li><a href="#_remote_timeout">Remote Timeout</a></li> <li><a href="#_gremlin_server_workers_2">Gremlin Server Workers</a></li> </ul> </li> -<li><a href="#_upgrading_for_providers_33">Upgrading for Providers</a> +<li><a href="#_upgrading_for_providers_32">Upgrading for Providers</a> <ul class="sectlevel3"> <li><a href="#_graph_database_providers_11">Graph Database Providers</a></li> <li><a href="#_graph_language_providers_3">Graph Language Providers</a></li> @@ -1784,7 +1748,7 @@ table.CodeRay td.code{padding:0 0 0 .75e </li> <li><a href="#_tinkerpop_3_1_2">TinkerPop 3.1.2</a> <ul class="sectlevel2"> -<li><a href="#_upgrading_for_users_60">Upgrading for Users</a> +<li><a href="#_upgrading_for_users_59">Upgrading for Users</a> <ul class="sectlevel3"> <li><a href="#_aliasing_sessions">Aliasing Sessions</a></li> <li><a href="#_remote_console">Remote Console</a></li> @@ -1794,10 +1758,10 @@ table.CodeRay td.code{padding:0 0 0 .75e <li><a href="#_session_timeout_setting">Session Timeout Setting</a></li> </ul> </li> -<li><a href="#_upgrading_for_providers_34">Upgrading for Providers</a> +<li><a href="#_upgrading_for_providers_33">Upgrading for Providers</a> <ul class="sectlevel3"> <li><a href="#_all_providers">All Providers</a></li> -<li><a href="#_graph_system_providers_18">Graph System Providers</a></li> +<li><a href="#_graph_system_providers_17">Graph System Providers</a></li> <li><a href="#_driver_providers_4">Driver Providers</a></li> <li><a href="#_plugin_providers">Plugin Providers</a></li> </ul> @@ -1806,7 +1770,7 @@ table.CodeRay td.code{padding:0 0 0 .75e </li> <li><a href="#_tinkerpop_3_1_1">TinkerPop 3.1.1</a> <ul class="sectlevel2"> -<li><a href="#_upgrading_for_users_61">Upgrading for Users</a> +<li><a href="#_upgrading_for_users_60">Upgrading for Users</a> <ul class="sectlevel3"> <li><a href="#_storage_io">Storage I/O</a></li> <li><a href="#_gremlin_server_transaction_management">Gremlin Server Transaction Management</a></li> @@ -1819,9 +1783,9 @@ table.CodeRay td.code{padding:0 0 0 .75e <li><a href="#_deprecated_supportsaddproperty">Deprecated supportsAddProperty()</a></li> </ul> </li> -<li><a href="#_upgrading_for_providers_35">Upgrading for Providers</a> +<li><a href="#_upgrading_for_providers_34">Upgrading for Providers</a> <ul class="sectlevel3"> -<li><a href="#_graph_system_providers_19">Graph System Providers</a></li> +<li><a href="#_graph_system_providers_18">Graph System Providers</a></li> <li><a href="#_graph_database_providers_12">Graph Database Providers</a></li> <li><a href="#_graph_processor_providers_2">Graph Processor Providers</a></li> </ul> @@ -1830,7 +1794,7 @@ table.CodeRay td.code{padding:0 0 0 .75e </li> <li><a href="#_tinkerpop_3_1_0_2">TinkerPop 3.1.0</a> <ul class="sectlevel2"> -<li><a href="#_upgrading_for_users_62">Upgrading for Users</a> +<li><a href="#_upgrading_for_users_61">Upgrading for Users</a> <ul class="sectlevel3"> <li><a href="#_shading_jackson">Shading Jackson</a></li> <li><a href="#_partitionstrategy_and_vertexproperty">PartitionStrategy and VertexProperty</a></li> @@ -1850,9 +1814,9 @@ table.CodeRay td.code{padding:0 0 0 .75e <li><a href="#_aliasing_remotes_in_the_console">Aliasing Remotes in the Console</a></li> </ul> </li> -<li><a href="#_upgrading_for_providers_36">Upgrading for Providers</a> +<li><a href="#_upgrading_for_providers_35">Upgrading for Providers</a> <ul class="sectlevel3"> -<li><a href="#_graph_system_providers_20">Graph System Providers</a></li> +<li><a href="#_graph_system_providers_19">Graph System Providers</a></li> <li><a href="#_driver_providers_5">Driver Providers</a></li> </ul> </li> @@ -1864,32 +1828,32 @@ table.CodeRay td.code{padding:0 0 0 .75e <ul class="sectlevel1"> <li><a href="#_tinkerpop_3_0_2">TinkerPop 3.0.2</a> <ul class="sectlevel2"> -<li><a href="#_upgrading_for_users_63">Upgrading for Users</a> +<li><a href="#_upgrading_for_users_62">Upgrading for Users</a> <ul class="sectlevel3"> <li><a href="#_bulkloadervertexprogram_blvp">BulkLoaderVertexProgram (BLVP)</a></li> <li><a href="#_tinkergraph">TinkerGraph</a></li> <li><a href="#_gremlin_driver_and_server">Gremlin Driver and Server</a></li> </ul> </li> -<li><a href="#_upgrading_for_providers_37">Upgrading for Providers</a> +<li><a href="#_upgrading_for_providers_36">Upgrading for Providers</a> <ul class="sectlevel3"> -<li><a href="#_graph_driver_providers_9">Graph Driver Providers</a></li> +<li><a href="#_graph_driver_providers_8">Graph Driver Providers</a></li> </ul> </li> </ul> </li> <li><a href="#_tinkerpop_3_0_1">TinkerPop 3.0.1</a> <ul class="sectlevel2"> -<li><a href="#_upgrading_for_users_64">Upgrading for Users</a> +<li><a href="#_upgrading_for_users_63">Upgrading for Users</a> <ul class="sectlevel3"> <li><a href="#_gremlin_server_2">Gremlin Server</a></li> <li><a href="#_neo4j">Neo4j</a></li> </ul> </li> -<li><a href="#_upgrading_for_providers_38">Upgrading for Providers</a> +<li><a href="#_upgrading_for_providers_37">Upgrading for Providers</a> <ul class="sectlevel3"> -<li><a href="#_graph_system_providers_21">Graph System Providers</a></li> -<li><a href="#_graph_driver_providers_10">Graph Driver Providers</a></li> +<li><a href="#_graph_system_providers_20">Graph System Providers</a></li> +<li><a href="#_graph_driver_providers_9">Graph Driver Providers</a></li> </ul> </li> </ul> @@ -1928,720 +1892,70 @@ equally useful to TinkerPop providers, w TinkerPop exposes. </div> </div> -<h1 id="_tinkerpop_4_0_0" class="sect0">TinkerPop 4.0.0</h1> +<h1 id="_tinkerpop_3_7_0" class="sect0">TinkerPop 3.7.0</h1> <div class="openblock partintro"> <div class="content"> <div class="imageblock"> <div class="content"> -<img src="https://raw.githubusercontent.com/apache/tinkerpop/master/docs/static/images/gremlin-standing.png" alt="gremlin standing" width="185"> +<img src="https://raw.githubusercontent.com/apache/tinkerpop/master/docs/static/images/gremlin-zamfir.png" alt="gremlin zamfir" width="185"> </div> </div> <div class="paragraph"> -<p><strong>4.0.0</strong></p> +<p><strong>Gremfir Master of the Pan Flute</strong></p> </div> </div> </div> <div class="sect1"> -<h2 id="_tinkerpop_4_0_0_m1">TinkerPop 4.0.0.M1</h2> +<h2 id="_tinkerpop_3_7_4">TinkerPop 3.7.4</h2> <div class="sectionbody"> <div class="paragraph"> <p><strong>Release Date: NOT OFFICIALLY RELEASED YET</strong></p> </div> <div class="paragraph"> -<p>Please see the <a href="https://github.com/apache/tinkerpop/blob/4.0.0/CHANGELOG.asciidoc#release-4-0-0">changelog</a> for a +<p>Please see the <a href="https://github.com/apache/tinkerpop/blob/3.7.4/CHANGELOG.asciidoc#release-3-7-4">changelog</a> for a complete list of all the modifications that are part of this release.</p> </div> -<div class="admonitionblock note"> -<table> -<tr> -<td class="icon"> -<div class="title">Note</div> -</td> -<td class="content"> -4.0.0.M1 is a milestone release. It is for meant as a preview version to try out the new HTTP API features in -the server and drivers (Java/Python only). As this is a milestone version only, you can expect breaking changes to -occur in future milestones for 4.0.0 on the way to its General Availability release. Items that have important -limitations and constraints pertinent to this milestone will be highlighted through the documentation inside an -"IMPORTANT" box that starts with "4.0 Milestone Release". -</td> -</tr> -</table> -</div> <div class="sect2"> <h3 id="_upgrading_for_users">Upgrading for Users</h3> <div class="sect3"> -<h4 id="_result_bulking_from_server">Result Bulking from Server</h4> -<div class="paragraph"> -<p>In previous versions, when a traversal is submitted through the DriverRemoteConnection (DRC) via the Bytecode processor, -the results from the server were bulked as Traverser, which provides a form of result optimization across the wire. -Starting with 4.0, with the removal of Bytecode and Traverser serializer, this optimization is now achieved via -<code>GraphBinaryV4</code> response message serialization, and can be controlled through cluster setting or per request option.</p> -</div> -<div class="paragraph"> -<p>Per request option setting will always override cluster settings, and regardless of cluster or request option settings, -bulking will only occur if the script processing language is set to <code>gremlin-lang</code> and the serializer is set to <code>GraphBinaryV4</code>.</p> -</div> -<div class="listingblock"> -<div class="content"> -<pre class="CodeRay highlight"><code data-lang="java"><span class="comment">// cluster setting</span> -Cluster cluster = Cluster.build().bulkResults(<span class="predefined-constant">true</span>).create(); - -<span class="comment">// per request option</span> -GraphTraversalSource g = traversal().with(DriverRemoteConnection.using(cluster)); -<span class="predefined-type">List</span> result = g.with(<span class="string"><span class="delimiter">"</span><span class="content">language</span><span class="delimiter">"</span></span>, <span class="string"><span class="delimiter">"</span><span class="content">gremlin-lang</span><span class="delimiter">"</span></span>).with(<span class="string"><span class="delimiter">"</span><span class="content">bulkResults</span><span class="delimiter">"</span></span>, <span class="predefined-constant">true</span>).inject(<span class="integer">1</span>).toList();</code></pre> -</div> -</div> -<div class="paragraph"> -<p>By default, the cluster setting of <code>bulkResults</code> is false. To remain consistent with previous behavior, remote traversal -submitted through the DRC will always send a request option setting <code>bulkResults</code> to <code>true</code>. This implies that if <code>gremlin-lang</code> -script engine and <code>GraphBinaryV4</code> serializer are used, then server will bulk results before sending regardless of cluster setting, -and can only be disabled via per request option.</p> -</div> -</div> -<div class="sect3"> -<h4 id="_bulkset_behavior_changes">BulkSet Behavior Changes</h4> -<div class="paragraph"> -<p>Starting with 4.0, steps which return BulkSet (e.g. <code>aggregate()</code>) will have results returned in different format -depending on embedded or remote usage.</p> -</div> -<div class="paragraph"> -<p>For embedded cases, a BulkSet will be returned as before.</p> -</div> -<div class="paragraph"> -<p>For remote cases, BulkSets will now be expanded into Lists upon deserialization with <code>gremlin-driver</code>. All other GLVs already expanded BulkSet to List prior to TinkerPop 4. -Each element in the BulkSet will appear in the list the same number of times as specified by its bulk value.</p> -</div> -</div> -<div class="sect3"> -<h4 id="_configuration_changes">Configuration changes</h4> -<div class="paragraph"> -<p>This is a placeholder to summarize configuration-related changes.</p> -</div> -<div class="ulist"> -<ul> -<li> -<p><code>maxContentLength</code> setting for Gremlin Driver has been renamed to <code>maxResponseContentLength</code> and now blocks incoming responses that are too large based on total response size.</p> -</li> -<li> -<p><code>maxContentLength</code> setting for Gremlin Server has been renamed to <code>maxRequestContentLength</code>.</p> -</li> -<li> -<p><code>enableCompression</code> setting has been removed.</p> -</li> -</ul> -</div> -</div> -<div class="sect3"> -<h4 id="_simplification_to_g_creation">Simplification to g creation</h4> -<div class="paragraph"> -<p>The creation of "g" is the start point to writing Gremlin. There are a number of ways to create it, but TinkerPop has -long recommended the use of the anonymous <code>traversal()</code> function for this creation.</p> -</div> -<div class="listingblock"> -<div class="content"> -<pre class="CodeRay highlight"><code data-lang="groovy"><span class="comment">// for embedded cases</span> -graph = TinkerGraph.open() -g = traversal().withEmbedded(graph) - -<span class="comment">// for remote cases</span> -g = traversal().withRemote(DriverRemoteConnection.using(...)))</code></pre> -</div> -</div> -<div class="paragraph"> -<p>As of this release, those two methods have been deprecated in favor of just <code>with()</code> which means you could simply write:</p> -</div> -<div class="listingblock"> -<div class="content"> -<pre class="CodeRay highlight"><code data-lang="groovy"><span class="comment">// for embedded cases</span> -graph = TinkerGraph.open() -g = traversal().with(graph) - -<span class="comment">// for remote cases</span> -g = traversal().with(DriverRemoteConnection.using(...)))</code></pre> -</div> -</div> -<div class="paragraph"> -<p>That’s a bit less to type, but also removes need to programmatically decide which function to call which hopefully -strengthens the abstraction further. To demonstrate this further consider this next example:</p> -</div> -<div class="listingblock"> -<div class="content"> -<pre class="CodeRay highlight"><code data-lang="groovy">g = traversal().with(<span class="string"><span class="delimiter">"</span><span class="content">config.properties</span><span class="delimiter">"</span></span>)</code></pre> -</div> -</div> -<div class="paragraph"> -<p>The properties file in the above example can either point to a remote configuration or a embedded configuration allowing -"g" to be switched as needed without code changes.</p> -</div> -<div class="paragraph"> -<p>See: <a href="https://issues.apache.org/jira/browse/TINKERPOP-3017">TINKERPOP-3017</a></p> -</div> -</div> -<div class="sect3"> -<h4 id="_changes_to_java_requestinterceptor">Changes to Java RequestInterceptor</h4> -<div class="paragraph"> -<p>Because the underlying transport has been changed from WebSockets to HTTP, the usage of the <code>RequestInterceptor</code> has -changed as well. The <code>RequestInterceptor</code> will now be run per request and will allow you to completely modify the HTTP -request that is sent to the server. <code>Cluster</code> has four new methods added to it: <code>addInterceptorAfter</code>, -<code>addInterceptorBefore</code>, <code>removeInterceptor</code> and <code>addInterceptor</code>. Each interceptor requires a name as it will be used -to insert new interceptors in different positions.</p> -</div> -<div class="paragraph"> -<p>The interceptors work with a new class called HttpRequest. This is just a basic abstraction over a request but it also -contains some useful strings for common headers. The initial <code>HttpRequest</code> that is passed to the first interceptor will -contain a <code>RequestMessage</code>. <code>RequestMessage</code> is immutable and only certain keys can be added to them. If you want to -customize the body by adding other fields, you will need to make a different copy of the <code>RequestMessage</code> or completely -change the body to contain a different data type. The final interceptor must return a <code>HttpRequest</code> whose body contains -a <code>byte[]</code>.</p> -</div> -<div class="paragraph"> -<p>After the initial HTTP request is generated, the interceptors will be called in order to allow the request to be -modified. After each <code>RequestInterceptor</code> is run, the request is updated with the data from the final <code>HttpRequest</code> and -that is sent to the endpoint. There is a default interceptor added to every <code>Cluster</code> called "serializer". This -interceptor is responsible for serializing the request body is which what the server normally expects. This is intended -to be an advanced customization technique that should only be used when needed.</p> -</div> -</div> -<div class="sect3"> -<h4 id="_addition_of_python_interceptor">Addition of Python interceptor</h4> -<div class="paragraph"> -<p>HTTP interceptors have been added to <code>gremlin-python</code> to enable capability similar to that of Java GLV. These -interceptors can be passed into either a <code>DriverRemoteConnection</code> or a <code>Client</code> using the interceptors parameter. An -interceptor is a <code>Callable</code> that accepts one argument which is the HTTP request (dictionary containing header, payload -and auth) or a list/tuple of these functions. The interceptors will run after the request serializer has run but before -any auth functions run so the HTTP request may still get modified after your interceptors are run. In situations where -you don’t want the payload to be serialized, the <code>message_serializer</code> has been split into a <code>request_serializer</code> and a -<code>response_serializer</code>. Simply set the <code>request_serializer</code> to <code>None</code> and this will prevent the <code>RequestMessage</code> from -being serialized. Again, this is expected to be an advanced feature so some knowledge of implementation details will be -required to make this work. For example, you’ll need to know what payload formats are accepted by <code>aiohttp</code> for the -request to be sent.</p> -</div> -</div> -<div class="sect3"> -<h4 id="_changes_to_deserialization_for_gremlin_javascript">Changes to deserialization for gremlin-javascript</h4> -<div class="paragraph"> -<p>Starting from this version, <code>gremlin-javascript</code> will deserialize <code>Set</code> data into a ECMAScript 2015 Set. Previously, -these were deserialized into arrays.</p> -</div> -</div> -<div class="sect3"> -<h4 id="_gremlin_grammar_changes">Gremlin Grammar Changes</h4> -<div class="paragraph"> -<p>A number of changes have been introduced to the Gremlin grammar to help make it be more consistent and easier to use.</p> -</div> -<div class="paragraph"> -<p><strong><code>new</code> keyword is now optional</strong></p> -</div> -<div class="paragraph"> -<p>The <code>new</code> keyword is now optional in all cases where it was previously used. Both of the following examples are now -valid syntax with the second being the preferred form going forward:</p> -</div> -<div class="listingblock"> -<div class="content"> -<pre class="CodeRay highlight"><code data-lang="groovy">g.V().withStrategies(<span class="keyword">new</span> SubgraphStrategy(<span class="key">vertices</span>: __.hasLabel(<span class="string"><span class="delimiter">'</span><span class="content">person</span><span class="delimiter">'</span></span>))) - -g.V().withStrategies(SubgraphStrategy(<span class="key">vertices</span>: __.hasLabel(<span class="string"><span class="delimiter">'</span><span class="content">person</span><span class="delimiter">'</span></span>)))</code></pre> -</div> -</div> -<div class="paragraph"> -<p>In a future version, it is likely that the <code>new</code> keyword will be removed entirely from the grammar.</p> -</div> -<div class="paragraph"> -<p><strong>Refined variable support</strong></p> -</div> -<div class="paragraph"> -<p>The Gremlin grammar allows variables to be used in various places. Unlike Groovy, from which the Gremlin grammar is -partially derived and which allows variables to be used for any argument to a method, Gremlin only allows for variables -to be used when they refer to particular types. In making this change it did mean that all enums like, <code>Scope</code>, <code>Pop</code>, -<code>Order</code>, etc. can no longer be used in that way and can therefore only be recognized as literal values.</p> -</div> -<div class="paragraph"> -<p><strong>Supports withoutStrategies()</strong></p> -</div> -<div class="paragraph"> -<p>The <code>withoutStrategies()</code> configuration step is now supported syntax for the grammar. While this option is not commonly -used it is still a part of the Gremlin language and there are times where it is helpful to have this fine grained -control over how a traversal works.</p> -</div> -<div class="listingblock"> -<div class="content"> -<pre class="CodeRay highlight"><code data-lang="groovy">g.V().withoutStrategies(CountStrategy)</code></pre> -</div> -</div> -<div class="paragraph"> -<p>See: <a href="https://issues.apache.org/jira/browse/TINKERPOP-2862">TINKERPOP-2862</a>, -<a href="https://issues.apache.org/jira/browse/TINKERPOP-3046">TINKERPOP-3046</a></p> -</div> -</div> -<div class="sect3"> -<h4 id="_renamed_none_to_discard">Renamed none() to discard()</h4> -<div class="paragraph"> -<p>The <code>none()</code> step, which was primarily used by <code>iterate()</code> to discard traversal results in remote contexts, has been -renamed to <code>discard()</code>. In its place is a new list filtering step <code>none()</code>, which takes a predicate as an argument and -passes lists with no elements matching the predicate.</p> -</div> -</div> -<div class="sect3"> -<h4 id="_splitting_a_string_into_characters_using_split">Splitting a string into characters using split()</h4> -<div class="paragraph"> -<p>The <code>split()</code> step will now split a string into a list of its characters if the given separator is an empty string.</p> -</div> -<div class="listingblock"> -<div class="content"> -<pre class="CodeRay highlight"><code data-lang="groovy"><span class="comment">// previous implementation</span> -g.inject(<span class="string"><span class="delimiter">"</span><span class="content">Hello</span><span class="delimiter">"</span></span>).split(<span class="string"><span class="delimiter">"</span><span class="delimiter">"</span></span>) -==>[Hello] - -<span class="comment">// new implementation</span> -g.inject(<span class="string"><span class="delimiter">"</span><span class="content">Hello</span><span class="delimiter">"</span></span>).split(<span class="string"><span class="delimiter">"</span><span class="delimiter">"</span></span>) -==>[H,e,l,l,o]</code></pre> -</div> -</div> -<div class="paragraph"> -<p>See: <a href="https://issues.apache.org/jira/browse/TINKERPOP-3083">TINKERPOP-3083</a></p> -</div> -</div> -<div class="sect3"> -<h4 id="_improved_handling_of_integer_overflows">Improved handling of integer overflows</h4> -<div class="paragraph"> -<p>Integer overflows caused by addition and multiplication operations will throw an exception instead of being silently -skipped with incorrect result.</p> -</div> -</div> -<div class="sect3"> -<h4 id="_seedstrategy_construction">SeedStrategy Construction</h4> -<div class="paragraph"> -<p>The <code>SeedStrategy</code> public constructor has been removed for Java and has been replaced by the builder pattern common -to all strategies. This change was made to ensure that the <code>SeedStrategy</code> could be constructed in a consistent manner.</p> -</div> -</div> -<div class="sect3"> -<h4 id="_removal_of_gremlin_archetype">Removal of <code>gremlin-archetype</code></h4> -<div class="paragraph"> -<p><code>gremlin-archetype</code>, which contained example projects demonstrating the use cases of TinkerPop, has been removed in -favor of newer sample applications which can be found in each GLV’s <code>examples</code> folder.</p> -</div> -</div> -<div class="sect3"> -<h4 id="_improved_translators">Improved Translators</h4> -<div class="paragraph"> -<p>The various Java <code>Translator</code> implementations allowing conversion of Gremlin traversals to string forms in various -languages have been modified considerably. First, they have been moved from to the -<code>org.apache.tinkerpop.gremlin.language.translator</code> package, because they now depend on the ANTLR grammar in -<code>gremlin-language</code> to handled the translation process. Making this change allowed for a more accurate translation of -Gremlin that doesn’t need to rely on reflection and positional arguments to determine which step was intended for use.</p> -</div> -<div class="paragraph"> -<p>Another important change was the introduction of specific translators for Groovy and Java. While Groovy translation -tends to work for most Java cases, there is syntax specific to Groovy where it does not. With a specific Java -translator, the translation process can be more accurate and less error prone.</p> -</div> -<div class="paragraph"> -<p>The syntax for the translators has simplified as well. The translator function now takes a Gremlin string and a target -language to translate to. Consider the following example:</p> -</div> -<div class="listingblock"> -<div class="content"> -<pre class="CodeRay highlight"><code data-lang="text">gremlin> GremlinTranslator.translate("g.V().out('knows')", Translator.GO) -==>g.V().Out("knows")</code></pre> -</div> -</div> -<div class="paragraph"> -<p>Further note that Gremlin language variants produce <code>gremlin-language</code> compliant strings directly since bytecode was -removed. As a result, all translators in .NET, Python, Go and Javascript have been removed.</p> -</div> -<div class="paragraph"> -<p>See: <a href="https://issues.apache.org/jira/browse/TINKERPOP-3028">TINKERPOP-3028</a></p> -</div> -</div> -<div class="sect3"> -<h4 id="_change_to_optionsstrategy_in_gremlin_python">Change to <code>OptionsStrategy</code> in <code>gremlin-python</code></h4> -<div class="paragraph"> -<p>The <code>__init__()</code> syntax has been updated to be both more pythonic and more aligned to the <code>gremlin-lang</code> syntax. -Previously, <code>OptionsStrategy()</code> took a single argument <code>options</code> which was a <code>dict</code> of all options to be set. -Now, all options should be set directly as keyword arguments.</p> -</div> -<div class="paragraph"> -<p>For example:</p> -</div> -<div class="listingblock"> -<div class="content"> -<pre class="CodeRay highlight"><code data-lang="python"><span class="comment"># 3.7 and before:</span> -g.with_strategies(OptionsStrategy(options={<span class="string"><span class="delimiter">'</span><span class="content">key1</span><span class="delimiter">'</span></span>: <span class="string"><span class="delimiter">'</span><span class="content">value1</span><span class="delimiter">'</span></span>, <span class="string"><span class="delimiter">'</span><span class="content">key2</span><span class="delimiter">'</span></span>: <span class="predefined-constant">True</span>})) -<span class="comment"># 4.x and newer:</span> -g.with_strategies(OptionsStrategy(key1=<span class="string"><span class="delimiter">'</span><span class="content">value1</span><span class="delimiter">'</span></span>, key2=<span class="predefined-constant">True</span>)) - -myOptions = {<span class="string"><span class="delimiter">'</span><span class="content">key1</span><span class="delimiter">'</span></span>: <span class="string"><span class="delimiter">'</span><span class="content">value1</span><span class="delimiter">'</span></span>, <span class="string"><span class="delimiter">'</span><span class="content">key2</span><span class="delimiter">'</span></span>: <span class="predefined-constant">True</span>} -<span class="comment"># 3.7 and before:</span> -g.with_strategies(OptionsStrategy(options=myOptions)) -<span class="comment"># 4.x and newer:</span> -g.with_strategies(OptionsStrategy(**myOptions))</code></pre> -</div> -</div> -</div> -<div class="sect3"> -<h4 id="_custom_traversal_strategy_construction">Custom Traversal Strategy Construction</h4> -<div class="paragraph"> -<p>Traversal strategy construction has been updated such that it is no longer required to have concrete classes for each -strategy being added to a graph traversal (use of concrete classes remains viable and is recommended for "native" -TinkerPop strategies). To use strategies without a concrete class, <code>TraversalStrategyProxy</code> can be used in Java, and -<code>TraversalStrategy</code> in Python.</p> -</div> -<div class="paragraph"> -<p>All the following examples will produce the script <code>g.withStrategies(new MyStrategy(config1:'my value',config2:123))</code>:</p> -</div> -<div class="listingblock"> -<div class="content"> -<pre class="CodeRay highlight"><code data-lang="java"><span class="predefined-type">Map</span><<span class="predefined-type">String</span>, <span class="predefined-type">Object</span>> configMap = <span class="keyword">new</span> <span class="predefined-type">LinkedHashMap</span><>(); - configMap.put(<span class="string"><span class="delimiter">"</span><span class="content">config1</span><span class="delimiter">"</span></span>, <span class="string"><span class="delimiter">"</span><span class="content">my value</span><span class="delimiter">"</span></span>); - configMap.put(<span class="string"><span class="delimiter">"</span><span class="content">config2</span><span class="delimiter">"</span></span>, <span class="integer">123</span>); - TraversalStrategy strategyProxy = <span class="keyword">new</span> TraversalStrategyProxy(<span class="string"><span class="delimiter">"</span><span class="content">MyStrategy</span><span class="delimiter">"</span></span>, <span class="keyword">new</span> MapConfiguration(configMap)); - - GraphTraversal traversal = g.withStrategies(strategyProxy);</code></pre> -</div> -</div> -<div class="listingblock"> -<div class="content"> -<pre class="CodeRay highlight"><code data-lang="python">g.with_strategies(TraversalStrategy( - strategy_name=<span class="string"><span class="delimiter">'</span><span class="content">MyStrategy</span><span class="delimiter">'</span></span>, - config1=<span class="string"><span class="delimiter">'</span><span class="content">my value</span><span class="delimiter">'</span></span>, - config2=<span class="integer">123</span> - ))</code></pre> -</div> -</div> -</div> -<div class="sect3"> -<h4 id="_changes_to_serialization">Changes to Serialization</h4> -<div class="paragraph"> -<p>The GLVs will only support GraphBinaryV4 and GraphSON support will be removed. This means that the serializer option -that was available in most GLVs has been removed. GraphBinary is a more compact format and has support for the same -types. This should lead to increased performance for users upgrading from any version of GraphSON to GraphBinary.</p> -</div> +<h4 id="_improved_server_memory_management">Improved Server Memory Management</h4> <div class="paragraph"> -<p>The number of serializable types has been reduced in V4. For example, only a single temporal type remains. You have two -options when trying to work with data types whose serializer has been removed: first, you can attempt to convert the -data to another type that still have a serializer or, second, the type may have been too specific and therefore removed -in which case your provider should have a Provider Defined Type (PDT) for it. See the next paragraph for information on -PDTs.</p> +<p>A TinkerPop-specific <code>MessageSizeEstimator</code> was added to more accurately measure the size of responses being written +back to the client. With a more accurate measurement, the server is able to better prevent exhaustion of direct memory +by overly eager channels writing large result sets to slower clients. Overall, this change should help reduce the +likelihood of the server hitting <code>OutOfMemoryExceptions</code> and other performance problems that may appear under certain +workloads and network conditions.</p> </div> <div class="paragraph"> -<p>Custom serializers have also been removed so if you previously included those as part of your application, they should -now be removed. In its place, PDTs have been introduced. In particular, there is the Primitive PDT and the Composite -PDT. Primitive PDTs are string-based representations of a primitive type supported by your provider. Composite types -contain a map of fields. You should consult your provider’s documentation to determine what types of fields a -particular PDT may contain.</p> -</div> -</div> -<div class="sect3"> -<h4 id="_changes_to_authentication_and_authorization">Changes to Authentication and Authorization</h4> -<div class="paragraph"> -<p>With the move to HTTP, the only authentication option supported out-of-the-box is HTTP basic access authentication -(username/password). The SASL-based authentication mechanisms are no longer supported (e.g. Kerberos). Your graph -system provider may choose to implement other authentication mechanisms over HTTP which you would have to use via a -request interceptor. Refer to your provider’s documentation to determine if other authentication mechanisms are -available.</p> -</div> -</div> -<div class="sect3"> -<h4 id="_transactions_disabled">Transactions Disabled</h4> -<div class="admonitionblock important"> -<table> -<tr> -<td class="icon"> -<div class="title">Important</div> -</td> -<td class="content"> -4.0 Milestone Release - Transactions are currently disabled and use of <code>tx()</code> will return an error. -</td> -</tr> -</table> -</div> +<p>It is worth noting that logging around the <code>writeBufferHighWaterMark</code> has been modified to include a bit more +information about the pause. This warning formerly was only issued on the first pause per request. Additional pauses +for that request would not be noted in the logs. The warnings now appear periodically for a request, immediately for +the first pause and then warnings will continue for subsequent pauses using an exponential backoff.</p> </div> -<div class="sect3"> -<h4 id="_result_bulking_changes">Result Bulking Changes</h4> <div class="paragraph"> -<p>Previous versions of the Gremlin Server would attempt to "bulk" the result if bytecode was used in the request. This -"bulking" increased performance by sending similar results once with a count of occurrences. Starting in 4.0, Gremlin -Server will bulk based on a newly introduced <code>bulked</code> field in the <code>RequestMessage</code>. It only applies to GraphBinary and -<code>gremlin-lang</code> requests and other requests won’t be bulked. This can be toggled in the language variants by setting a -boolean value with <code>enableBulkedResult()</code> in the <code>Cluster</code> settings.</p> +<p>See: <a href="https://issues.apache.org/jira/browse/TINKERPOP-3124">TINKERPOP-3124</a></p> </div> </div> <div class="sect3"> -<h4 id="_gremlin_java_changes">Gremlin Java Changes</h4> +<h4 id="_channel_metrics">Channel Metrics</h4> <div class="paragraph"> -<p>Connection pooling has been updated to work with HTTP. Previously, connections could only be opened one at a time, but -this has changed and now many connections can be opened at the same time. This supports bursty workloads where many -queries may be issued within a short period of time. Connections are no longer closed based on how "busy" they are -based on the <code>minInProcessPerConnection</code> and <code>minSimultaneousUsagePerConnection</code>, rather they are closed based on an -idle timeout called <code>idleConnectionTimeout</code>. Because the number of connections can increase much faster and connections -are closed based on a timeout, the <code>minConnectionPoolSize</code> option has been removed and there may be zero connections -available if the driver has been idle for a while.</p> +<p>Gremlin Server has three new metrics in the <code>org.apache.tinkerpop.gremlin.server.GremlinServer</code> space: +<code>channels.paused</code>, <code>channels.total</code>, and <code>channels.write-pauses</code>. These metrics are designed to provide more insight +into channel (websocket and http) operations to use as a tool in understanding server memory issues and latency.</p> </div> <div class="paragraph"> -<p>The Java driver can currently handle a response that is a maximum of 2^31-1 (<code>Integer.MAX_VALUE</code>) bytes in size. -Queries that return more data will have to be separated into multiple queries that return less data.</p> +<p>See: <a href="https://tinkerpop.apache.org/docs/3.7.4/reference/#metrics">Reference Documentation - Metrics</a></p> </div> </div> </div> <div class="sect2"> <h3 id="_upgrading_for_providers">Upgrading for Providers</h3> <div class="sect3"> -<h4 id="_renaming_nonestep_to_discardstep">Renaming NoneStep to DiscardStep</h4> -<div class="paragraph"> -<p>NoneStep, which was primarily used by <code>iterate()</code> to discard traversal results in remote contexts, has been renamed to -DiscardStep. In its place is a new list filtering NoneStep, which takes a predicate as an argument and passes lists with -no elements matching the predicate.</p> -</div> -</div> -<div class="sect3"> -<h4 id="_changes_to_serialization_2">Changes to Serialization</h4> -<div class="paragraph"> -<p>The V4 versions of GraphBinary and GraphSON are being introduced. Support for the older versions of GraphBinary (V1) -and GraphSON (V1-3) is removed. Upon the full release of 4.0, the GLVs will only use GraphBinary, however, the Gremlin -Server will support both GraphSON and GraphBinary. The following is a list of the major changes to the GraphBinary -format:</p> -</div> -<div class="ulist"> -<ul> -<li> -<p>Removed type serializers:</p> -<div class="ulist"> -<ul> -<li> -<p>Period</p> -</li> -<li> -<p>Date</p> -</li> -<li> -<p>TimeStamp</p> -</li> -<li> -<p>Instant</p> -</li> -<li> -<p>ZonedDateTime</p> -</li> -<li> -<p>OffsetTime</p> -</li> -<li> -<p>LocalDateTime</p> -</li> -<li> -<p>LocalDate</p> -</li> -<li> -<p>LocalTime</p> -</li> -<li> -<p>MonthDay</p> -</li> -<li> -<p>YearMonth</p> -</li> -<li> -<p>Year</p> -</li> -<li> -<p>ZoneOffset</p> -</li> -<li> -<p>BulkSet</p> -</li> -<li> -<p>Class</p> -</li> -<li> -<p>Binding</p> -</li> -<li> -<p>Bytecode</p> -</li> -<li> -<p>Barrier</p> -</li> -<li> -<p>Cardinality</p> -</li> -<li> -<p>Column</p> -</li> -<li> -<p>Operator</p> -</li> -<li> -<p>Order</p> -</li> -<li> -<p>Pick</p> -</li> -<li> -<p>Pop</p> -</li> -<li> -<p>Scope</p> -</li> -<li> -<p>Merge</p> -</li> -<li> -<p>DT</p> -</li> -<li> -<p>Lambda</p> -</li> -<li> -<p>P</p> -</li> -<li> -<p>Traverser</p> -</li> -<li> -<p>TextP</p> -</li> -<li> -<p>TraversalStrategy</p> -</li> -<li> -<p>Metrics</p> -</li> -<li> -<p>TraversalMetrics</p> -</li> -<li> -<p>InetAddress</p> -</li> -</ul> -</div> -</li> -<li> -<p>Byte is redefined from being unsigned byte to a signed byte.</p> -</li> -<li> -<p>List has a <code>0x02</code> value_flag used to denote bulking.</p> -</li> -<li> -<p>Map has a <code>0x02</code> value_flag used to denote ordering.</p> -</li> -<li> -<p><code>Element</code> (Vertex, Edge, VertexProperty) labels have been changed from <code>String</code> to <code>List</code> of <code>String</code>.</p> -</li> -<li> -<p><code>Element</code> (Vertex, Edge, VertexProperty) properties are no longer null and are <code>List</code> of <code>Property</code>.</p> -</li> -<li> -<p>Custom is replaced with Provider Defined Types</p> -</li> -</ul> -</div> -<div class="paragraph"> -<p>One of the biggest differences is in datetime support. Previously, in the Java implementation, <code>java.util.Date</code>, -<code>java.sql.Timestamp</code> and most types from the <code>java.time</code> package had serializers. This is isn’t the case in GraphSON 4 -as only <code>java.time.OffsetDateTime</code> is supported. Java provides methods to convert amongst these classes so they should -be used to convert your data to and from <code>java.time.OffsetDateTime</code>.</p> -</div> -<div class="paragraph"> -<p>The <code>GraphSONSerializerProvider</code> is not used in GraphSON 4. The <code>GraphSONSerializerProvider</code> uses the -<code>ToStringSerializer</code> for any unknown type and was used in previous GraphSON versions. Because GraphSON 4 is only -intended to serialize specific types and not used as a general serializer, GraphSON 4 serializers will throw an error -when encountering unknown types.</p> -</div> -</div> -<div class="sect3"> <h4 id="_graph_system_providers">Graph System Providers</h4> -<div class="sect4"> -<h5 id="_abstractauthenticatorhandler_constructor">AbstractAuthenticatorHandler Constructor</h5> -<div class="paragraph"> -<p>The deprecated one-arg constructor for <code>AbstractAuthenticationHandler</code> has been removed along with two-arg constructors -for the implementations. Gremlin Server formerly supported the two-arg <code>Authenticator</code>, and <code>Settings</code> constructor for -instantiating new custom instances. It now expects implementations of <code>AbstractAuthenticationHandler</code> to use a -three-arg constructor that takes <code>Authenticator</code>, <code>Authorizer</code>, and <code>Settings</code>.</p> -</div> -</div> -<div class="sect4"> -<h5 id="_graphmanager_changes">GraphManager Changes</h5> -<div class="paragraph"> -<p>The <code>beforeQueryStart()</code>, <code>onQueryError()</code>, and <code>onQuerySuccess()</code> of <code>GraphManager</code> have been removed. These were -originally intended to give providers more insight into when execution occurs in the server and the outcome of that -execution. However, they depended on <code>RequestMessage</code> containing a Request ID, which isn’t the case anymore.</p> -</div> -</div> -<div class="sect4"> -<h5 id="_gremlin_server_updates">Gremlin Server Updates</h5> -<div class="paragraph"> -<p>The <code>OpProcessor</code> extension point of the server has been removed. In order to extend the functionality of the Gremlin -Server, you have to implement your own <code>Channelizer</code>.</p> -</div> -<div class="paragraph"> -<p>If you are a provider that makes use of the Gremlin Server, you may need to update server configuration YAML files that -you provide to your users. With the change from WebSockets to HTTP, some of the previous default values are invalid and -some of the fields no longer exist. See <a href="https://tinkerpop.apache.org/docs/4.0.0/reference/#_configuring_2">options</a> -for an updated list. One of the most important changes is to the <code>Channelizer</code> configuration as only the -<code>HttpChannelizer</code> remains and the rest have been removed.</p> -</div> -</div> -</div> -<div class="sect3"> -<h4 id="_graph_driver_providers">Graph Driver Providers</h4> -<div class="sect4"> -<h5 id="_application_layer_protocol_support">Application Layer Protocol Support</h5> -<div class="paragraph"> -<p>HTTP/1.1 is now the only supported application-layer protocol and WebSockets support is dropped. Please follow the -instructions in the -<a href="https://tinkerpop.apache.org/docs/4.0.0/dev/provider/#_graph_driver_provider_requirements">provider documentation</a> -for more detailed information. The subprotocol remains fairly similar but has been adjusted to work better with HTTP. -Also, the move to HTTP means that SASL has been removed as an authentication mechanism and only HTTP basic remains.</p> -</div> -</div> -<div class="sect4"> -<h5 id="_request_interceptor">Request Interceptor</h5> -<div class="paragraph"> -<p>It is strongly recommended that every graph driver provider give a way for users to intercept and modify the HTTP -request before it is sent off to the server. This capability is needed in cases where the graph system provider has -additional functionality that can be enabled by modifying the HTTP request.</p> -</div> -</div> -</div> -</div> -</div> -</div> -<h1 id="_tinkerpop_3_7_0" class="sect0">TinkerPop 3.7.0</h1> -<div class="openblock partintro"> -<div class="content"> -<div class="imageblock"> -<div class="content"> -<img src="https://raw.githubusercontent.com/apache/tinkerpop/master/docs/static/images/gremlin-zamfir.png" alt="gremlin zamfir" width="185"> -</div> -</div> -<div class="paragraph"> -<p><strong>Gremfir Master of the Pan Flute</strong></p> -</div> -</div> -</div> -<div class="sect1"> -<h2 id="_tinkerpop_3_7_4">TinkerPop 3.7.4</h2> -<div class="sectionbody"> -<div class="paragraph"> -<p><strong>Release Date: NOT OFFICIALLY RELEASED YET</strong></p> -</div> -<div class="paragraph"> -<p>Please see the <a href="https://github.com/apache/tinkerpop/blob/3.7.4/CHANGELOG.asciidoc#release-3-7-4">changelog</a> for a -complete list of all the modifications that are part of this release.</p> -</div> -<div class="sect2"> -<h3 id="_upgrading_for_users_2">Upgrading for Users</h3> </div> -<div class="sect2"> -<h3 id="_upgrading_for_providers_2">Upgrading for Providers</h3> <div class="sect3"> -<h4 id="_graph_system_providers_2">Graph System Providers</h4> - -</div> -<div class="sect3"> -<h4 id="_graph_driver_providers_2">Graph Driver Providers</h4> +<h4 id="_graph_driver_providers">Graph Driver Providers</h4> </div> </div> @@ -2658,7 +1972,7 @@ complete list of all the modifications t complete list of all the modifications that are part of this release.</p> </div> <div class="sect2"> -<h3 id="_upgrading_for_users_3">Upgrading for Users</h3> +<h3 id="_upgrading_for_users_2">Upgrading for Users</h3> <div class="sect3"> <h4 id="_graphbinary_compatibility">GraphBinary Compatibility</h4> <div class="paragraph"> @@ -2711,7 +2025,7 @@ complete list of all the modifications t complete list of all the modifications that are part of this release.</p> </div> <div class="sect2"> -<h3 id="_upgrading_for_users_4">Upgrading for Users</h3> +<h3 id="_upgrading_for_users_3">Upgrading for Users</h3> <div class="sect3"> <h4 id="_string_manipulation_steps">String Manipulation Steps</h4> <div class="paragraph"> @@ -3090,9 +2404,9 @@ See: <a href="https://issues.apache.org/ </div> </div> <div class="sect2"> -<h3 id="_upgrading_for_providers_3">Upgrading for Providers</h3> +<h3 id="_upgrading_for_providers_2">Upgrading for Providers</h3> <div class="sect3"> -<h4 id="_graph_system_providers_3">Graph System Providers</h4> +<h4 id="_graph_system_providers_2">Graph System Providers</h4> <div class="sect4"> <h5 id="_multiproperty_and_metaproperty_test_tags">MultiProperty and MetaProperty Test Tags</h5> <div class="paragraph"> @@ -3124,7 +2438,7 @@ removed.</p> <p>Please see the <a href="https://github.com/apache/tinkerpop/blob/3.7.0/CHANGELOG.asciidoc#release-3-7-0">changelog</a> for a complete list of all the modifications that are part of this release.</p> </div> <div class="sect2"> -<h3 id="_upgrading_for_users_5">Upgrading for Users</h3> +<h3 id="_upgrading_for_users_4">Upgrading for Users</h3> <div class="sect3"> <h4 id="_string_concat_step">String concat() Step</h4> <div class="paragraph"> @@ -3695,9 +3009,9 @@ the JVM. The following are only examples </div> </div> <div class="sect2"> -<h3 id="_upgrading_for_providers_4">Upgrading for Providers</h3> +<h3 id="_upgrading_for_providers_3">Upgrading for Providers</h3> <div class="sect3"> -<h4 id="_graph_driver_providers_3">Graph Driver Providers</h4> +<h4 id="_graph_driver_providers_2">Graph Driver Providers</h4> <div class="sect4"> <h5 id="_gremlin_net_nullable_reference_types">Gremlin.NET: Nullable Reference Types</h5> <div class="paragraph"> @@ -3719,7 +3033,7 @@ We also used this opportunity to convert </div> </div> <div class="sect3"> -<h4 id="_graph_system_providers_4">Graph System Providers</h4> +<h4 id="_graph_system_providers_3">Graph System Providers</h4> <div class="sect4"> <h5 id="_reworked_gremlin_socket_server">Reworked Gremlin Socket Server</h5> <div class="paragraph"> @@ -3792,7 +3106,7 @@ In previous version <code>toString</code complete list of all the modifications that are part of this release.</p> </div> <div class="sect2"> -<h3 id="_upgrading_for_users_6">Upgrading for Users</h3> +<h3 id="_upgrading_for_users_5">Upgrading for Users</h3> <div class="sect3"> <h4 id="_runtime_updates">Runtime Updates</h4> <div class="paragraph"> @@ -3814,7 +3128,7 @@ complete list of all the modifications t complete list of all the modifications that are part of this release.</p> </div> <div class="sect2"> -<h3 id="_upgrading_for_users_7">Upgrading for Users</h3> +<h3 id="_upgrading_for_users_6">Upgrading for Users</h3> <div class="sect3"> <h4 id="_runtime_version_upgrades">Runtime Version Upgrades</h4> <div class="paragraph"> @@ -3853,7 +3167,7 @@ Gremlin.Net driver expected.</p> complete list of all the modifications that are part of this release.</p> </div> <div class="sect2"> -<h3 id="_upgrading_for_providers_5">Upgrading for Providers</h3> +<h3 id="_upgrading_for_providers_4">Upgrading for Providers</h3> <div class="paragraph"> <p>The <code>HttpGremlinRequestEncoder</code> constructor has been deprecated in favor of one with an additional parameter <code>boolean userAgentEnabled</code>. User agent HTTP headers can now be encoded if this flag is enabled.</p> @@ -3871,7 +3185,7 @@ User agent HTTP headers can now be encod
[... 963 lines stripped ...]
