[ 
https://issues.apache.org/jira/browse/TINKERPOP-1744?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16119716#comment-16119716
 ] 

ASF GitHub Bot commented on TINKERPOP-1744:
-------------------------------------------

Github user FlorianHockmann commented on a diff in the pull request:

    https://github.com/apache/tinkerpop/pull/690#discussion_r132150241
  
    --- Diff: gremlin-dotnet/src/Gremlin.Net/Structure/Utils.cs ---
    @@ -0,0 +1,55 @@
    +#region License
    +
    +/*
    + * Licensed to the Apache Software Foundation (ASF) under one
    + * or more contributor license agreements.  See the NOTICE file
    + * distributed with this work for additional information
    + * regarding copyright ownership.  The ASF licenses this file
    + * to you under the Apache License, Version 2.0 (the
    + * "License"); you may not use this file except in compliance
    + * with the License.  You may obtain a copy of the License at
    + *
    + *     http://www.apache.org/licenses/LICENSE-2.0
    + *
    + * Unless required by applicable law or agreed to in writing,
    + * software distributed under the License is distributed on an
    + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
    + * KIND, either express or implied.  See the License for the
    + * specific language governing permissions and limitations
    + * under the License.
    + */
    +
    +#endregion
    +
    +using System;
    +using System.Runtime.ExceptionServices;
    +using System.Threading.Tasks;
    +
    +namespace Gremlin.Net.Structure
    +{
    +    /// <summary>
    +    /// Contains useful methods that can be reused across the project. 
    +    /// </summary>
    +    internal static class Utils
    +    {
    +        /// <summary>
    +        /// Waits the completion of the provided Task.
    +        /// When an AggregateException is thrown, the inner exception is 
thrown.
    +        /// </summary>
    +        public static void WaitUnwrap(this Task task)
    +        {
    +            try
    +            {
    +                task.Wait();
    +            }
    +            catch (AggregateException ex)
    +            {
    +                if (ex.InnerExceptions.Count == 1)
    --- End diff --
    
    Why not iterating over the `InnerExceptions` and then rethrowing all of 
them? That's done for example in the first listing here: 
https://docs.microsoft.com/en-us/dotnet/standard/parallel-programming/exception-handling-task-parallel-library


> Gremlin .NET: Exception from sync execution gets wrapped in AggregateException
> ------------------------------------------------------------------------------
>
>                 Key: TINKERPOP-1744
>                 URL: https://issues.apache.org/jira/browse/TINKERPOP-1744
>             Project: TinkerPop
>          Issue Type: Bug
>          Components: language-variant
>            Reporter: Jorge Bay
>            Assignee: Jorge Bay
>
> When getting a server side exception and executing a traversal synchronously 
> (ie: {{Next()}}, {{ToList()}}, ...), Gremlin.Net throws the original 
> exception wrapped in a {{AggregateException}}, which is not desired.
> This is caused by the {{Task.Wait()}} call on {{RemoteStrategy.Apply()}} 
> method.
> We should catch the wrapped exception and throw the original.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to