Search Results for

    Show / Hide Table of Contents

    AK2000 - Error

    Do not use Ask<T> or Ask with TimeSpan.Zero for timeout.

    Cause

    When using Ask, you must always specify a timeout value greater than TimeSpan.Zero otherwise the process might deadlock. See https://github.com/akkadotnet/akka.net/issues/6131 for details.

    Important

    This rule is not exhaustive - Roslyn can't scan every possible variable value at compilation time, so it's still possible to pass in a TimeSpan.Zero value even with this rule present.

    An example:

    using Akka.Actor;
    using System.Threading.Tasks;
    using System;
    
    public static class MyActorCaller{
     public static Task<string> Call(IActorRef actor){
         return actor.Ask<string>(""hello"", TimeSpan.Zero);
     }
    }
    

    Resolution

    The right way to fix this issue is to pass in a non-zero value or to use the Ask<T> overload that accepts a CancellationToken.

    Here's an example below:

    using Akka.Actor;
    using System.Threading.Tasks;
    using System;
    
    public static class MyActorCaller{
        public static Task<string> Call(IActorRef actor){
            return actor.Ask<string>(""hello"", TimeSpan.FromSeconds(1));
        }
    }
    
    In this article
    • githubEdit this page
    Back to top
    Contribute
    • Project Chat
    • Discussion Forum
    • Source Code
    Support
    • Akka.NET Support Plans
    • Akka.NET Observability Tools
    • Akka.NET Training & Consulting
    Maintained By
    • Petabridge - The Akka.NET Company
    • Learn Akka.NET