how to handle grpc client connection errors?2019 Community Moderator ElectionHow do I enumerate an enum in C#?How do I get a consistent byte representation of strings in C# without manually specifying an encoding?How do I generate a random int number?Sample Client Side gRPC load balancerHow to know if a GRPC server is availableCan a gRPC client connect timeout be set independent of reconnect backoff settings?gRPC polling for incoming packets from multiple sockets at onceGRPC server stream (UNITY app) stops sending dataCannot connect to a gRPC service running in local Docker containerHow to handle hourly Bigtable connection closes?

How to educate team mate to take screenshots for bugs with out unwanted stuff

What do you call someone who likes to pick fights?

Was it really inappropriate to write a pull request for the company I interviewed with?

Are all players supposed to be able to see each others' character sheets?

What would be the most expensive material to an intergalactic society?

Are E natural minor and B harmonic minor related?

Do black holes violate the conservation of mass?

I can't die. Who am I?

Professor forcing me to attend a conference, I can't afford even with 50% funding

What should I do when a paper is published similar to my PhD thesis without citation?

Do Cubics always have one real root?

How can a demon take control of a human body during REM sleep?

Is "cogitate" used appropriately in "I cogitate that success relies on hard work"?

Should we avoid writing fiction about historical events without extensive research?

How do I increase the number of TTY consoles?

Is there a math expression equivalent to the conditional ternary operator?

PTIJ: Who was the sixth set of priestly clothes for?

Why does Central Limit Theorem break down in my simulation?

Why aren't there more Gauls like Obelix?

Idiom for feeling after taking risk and someone else being rewarded

How do spaceships determine each other's mass in space?

Are these two graphs isomorphic? Why/Why not?

Which country has more?

Does the US political system, in principle, allow for a no-party system?



how to handle grpc client connection errors?



2019 Community Moderator ElectionHow do I enumerate an enum in C#?How do I get a consistent byte representation of strings in C# without manually specifying an encoding?How do I generate a random int number?Sample Client Side gRPC load balancerHow to know if a GRPC server is availableCan a gRPC client connect timeout be set independent of reconnect backoff settings?gRPC polling for incoming packets from multiple sockets at onceGRPC server stream (UNITY app) stops sending dataCannot connect to a gRPC service running in local Docker containerHow to handle hourly Bigtable connection closes?










0















Please help me to understand grpc client connection error handling.



I've used Micrsoft WCF before. It was easy to try to connect several times and to give up if there is no service accepting incoming connections like below:



// this is pseudo code
int attemptCount = 0;
while (true)
try

client.Connect(); // exception is raised if there is not service listening for incoming connection
break;

catch (Exception)

client.Abort(); // to clear connection faulted state
if (++attempCount == 5)
throw;
Thread.Wait(500); // waiting for service to start




5 connection attempts is taken and then client application is terminated if there is no service listening on certain IP:port



This was used when I have client and service started from VisualStudio debug at the same time so sometime client starts first and it has to wait for service to start.



I've tried to do the same using gRPC client but there is no method to reset channel.State from ChannelState.TransientFailure back to working. I know that gRPC makes pauses between connection if something is wrong:




For many non-fatal failures (e.g., TCP connection attempts timing out
because the server is not yet available), the channel may spend
increasingly large amounts of time in this state.
https://grpc.io/grpc-java/javadoc/io/grpc/ConnectivityState.html




I can try to use WaitForStateChangedAsync but how can I configure gRPC client to wait for certain amount of time between reconnection attempts ?



Is there any other way to connect several times and terminate client for gRPC ?



Thank you










share|improve this question


























    0















    Please help me to understand grpc client connection error handling.



    I've used Micrsoft WCF before. It was easy to try to connect several times and to give up if there is no service accepting incoming connections like below:



    // this is pseudo code
    int attemptCount = 0;
    while (true)
    try

    client.Connect(); // exception is raised if there is not service listening for incoming connection
    break;

    catch (Exception)

    client.Abort(); // to clear connection faulted state
    if (++attempCount == 5)
    throw;
    Thread.Wait(500); // waiting for service to start




    5 connection attempts is taken and then client application is terminated if there is no service listening on certain IP:port



    This was used when I have client and service started from VisualStudio debug at the same time so sometime client starts first and it has to wait for service to start.



    I've tried to do the same using gRPC client but there is no method to reset channel.State from ChannelState.TransientFailure back to working. I know that gRPC makes pauses between connection if something is wrong:




    For many non-fatal failures (e.g., TCP connection attempts timing out
    because the server is not yet available), the channel may spend
    increasingly large amounts of time in this state.
    https://grpc.io/grpc-java/javadoc/io/grpc/ConnectivityState.html




    I can try to use WaitForStateChangedAsync but how can I configure gRPC client to wait for certain amount of time between reconnection attempts ?



    Is there any other way to connect several times and terminate client for gRPC ?



    Thank you










    share|improve this question
























      0












      0








      0








      Please help me to understand grpc client connection error handling.



      I've used Micrsoft WCF before. It was easy to try to connect several times and to give up if there is no service accepting incoming connections like below:



      // this is pseudo code
      int attemptCount = 0;
      while (true)
      try

      client.Connect(); // exception is raised if there is not service listening for incoming connection
      break;

      catch (Exception)

      client.Abort(); // to clear connection faulted state
      if (++attempCount == 5)
      throw;
      Thread.Wait(500); // waiting for service to start




      5 connection attempts is taken and then client application is terminated if there is no service listening on certain IP:port



      This was used when I have client and service started from VisualStudio debug at the same time so sometime client starts first and it has to wait for service to start.



      I've tried to do the same using gRPC client but there is no method to reset channel.State from ChannelState.TransientFailure back to working. I know that gRPC makes pauses between connection if something is wrong:




      For many non-fatal failures (e.g., TCP connection attempts timing out
      because the server is not yet available), the channel may spend
      increasingly large amounts of time in this state.
      https://grpc.io/grpc-java/javadoc/io/grpc/ConnectivityState.html




      I can try to use WaitForStateChangedAsync but how can I configure gRPC client to wait for certain amount of time between reconnection attempts ?



      Is there any other way to connect several times and terminate client for gRPC ?



      Thank you










      share|improve this question














      Please help me to understand grpc client connection error handling.



      I've used Micrsoft WCF before. It was easy to try to connect several times and to give up if there is no service accepting incoming connections like below:



      // this is pseudo code
      int attemptCount = 0;
      while (true)
      try

      client.Connect(); // exception is raised if there is not service listening for incoming connection
      break;

      catch (Exception)

      client.Abort(); // to clear connection faulted state
      if (++attempCount == 5)
      throw;
      Thread.Wait(500); // waiting for service to start




      5 connection attempts is taken and then client application is terminated if there is no service listening on certain IP:port



      This was used when I have client and service started from VisualStudio debug at the same time so sometime client starts first and it has to wait for service to start.



      I've tried to do the same using gRPC client but there is no method to reset channel.State from ChannelState.TransientFailure back to working. I know that gRPC makes pauses between connection if something is wrong:




      For many non-fatal failures (e.g., TCP connection attempts timing out
      because the server is not yet available), the channel may spend
      increasingly large amounts of time in this state.
      https://grpc.io/grpc-java/javadoc/io/grpc/ConnectivityState.html




      I can try to use WaitForStateChangedAsync but how can I configure gRPC client to wait for certain amount of time between reconnection attempts ?



      Is there any other way to connect several times and terminate client for gRPC ?



      Thank you







      c# grpc






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked Mar 6 at 13:26









      oleksaoleksa

      306320




      306320






















          1 Answer
          1






          active

          oldest

          votes


















          0














          gRPC has exponential backoff control on channel reconnection internally.



          We do have some backoff parameters, and some of them are configurable by channel arguments.
          https://github.com/grpc/grpc/blob/2bd7ad0112f56d2bdbc37d01a431c1e375039f2e/src/core/ext/filters/client_channel/subchannel.cc#L61



          But we don't have any parameter to control the max attempt times as far as I know. Please file a feature request on https://github.com/grpc/grpc so that we can follow up.






          share|improve this answer






















            Your Answer






            StackExchange.ifUsing("editor", function ()
            StackExchange.using("externalEditor", function ()
            StackExchange.using("snippets", function ()
            StackExchange.snippets.init();
            );
            );
            , "code-snippets");

            StackExchange.ready(function()
            var channelOptions =
            tags: "".split(" "),
            id: "1"
            ;
            initTagRenderer("".split(" "), "".split(" "), channelOptions);

            StackExchange.using("externalEditor", function()
            // Have to fire editor after snippets, if snippets enabled
            if (StackExchange.settings.snippets.snippetsEnabled)
            StackExchange.using("snippets", function()
            createEditor();
            );

            else
            createEditor();

            );

            function createEditor()
            StackExchange.prepareEditor(
            heartbeatType: 'answer',
            autoActivateHeartbeat: false,
            convertImagesToLinks: true,
            noModals: true,
            showLowRepImageUploadWarning: true,
            reputationToPostImages: 10,
            bindNavPrevention: true,
            postfix: "",
            imageUploader:
            brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
            contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
            allowUrls: true
            ,
            onDemand: true,
            discardSelector: ".discard-answer"
            ,immediatelyShowMarkdownHelp:true
            );



            );













            draft saved

            draft discarded


















            StackExchange.ready(
            function ()
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55024232%2fhow-to-handle-grpc-client-connection-errors%23new-answer', 'question_page');

            );

            Post as a guest















            Required, but never shown

























            1 Answer
            1






            active

            oldest

            votes








            1 Answer
            1






            active

            oldest

            votes









            active

            oldest

            votes






            active

            oldest

            votes









            0














            gRPC has exponential backoff control on channel reconnection internally.



            We do have some backoff parameters, and some of them are configurable by channel arguments.
            https://github.com/grpc/grpc/blob/2bd7ad0112f56d2bdbc37d01a431c1e375039f2e/src/core/ext/filters/client_channel/subchannel.cc#L61



            But we don't have any parameter to control the max attempt times as far as I know. Please file a feature request on https://github.com/grpc/grpc so that we can follow up.






            share|improve this answer



























              0














              gRPC has exponential backoff control on channel reconnection internally.



              We do have some backoff parameters, and some of them are configurable by channel arguments.
              https://github.com/grpc/grpc/blob/2bd7ad0112f56d2bdbc37d01a431c1e375039f2e/src/core/ext/filters/client_channel/subchannel.cc#L61



              But we don't have any parameter to control the max attempt times as far as I know. Please file a feature request on https://github.com/grpc/grpc so that we can follow up.






              share|improve this answer

























                0












                0








                0







                gRPC has exponential backoff control on channel reconnection internally.



                We do have some backoff parameters, and some of them are configurable by channel arguments.
                https://github.com/grpc/grpc/blob/2bd7ad0112f56d2bdbc37d01a431c1e375039f2e/src/core/ext/filters/client_channel/subchannel.cc#L61



                But we don't have any parameter to control the max attempt times as far as I know. Please file a feature request on https://github.com/grpc/grpc so that we can follow up.






                share|improve this answer













                gRPC has exponential backoff control on channel reconnection internally.



                We do have some backoff parameters, and some of them are configurable by channel arguments.
                https://github.com/grpc/grpc/blob/2bd7ad0112f56d2bdbc37d01a431c1e375039f2e/src/core/ext/filters/client_channel/subchannel.cc#L61



                But we don't have any parameter to control the max attempt times as far as I know. Please file a feature request on https://github.com/grpc/grpc so that we can follow up.







                share|improve this answer












                share|improve this answer



                share|improve this answer










                answered Mar 6 at 19:09









                Juanli ShenJuanli Shen

                383




                383





























                    draft saved

                    draft discarded
















































                    Thanks for contributing an answer to Stack Overflow!


                    • Please be sure to answer the question. Provide details and share your research!

                    But avoid


                    • Asking for help, clarification, or responding to other answers.

                    • Making statements based on opinion; back them up with references or personal experience.

                    To learn more, see our tips on writing great answers.




                    draft saved


                    draft discarded














                    StackExchange.ready(
                    function ()
                    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55024232%2fhow-to-handle-grpc-client-connection-errors%23new-answer', 'question_page');

                    );

                    Post as a guest















                    Required, but never shown





















































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown

































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown







                    Popular posts from this blog

                    Save data to MySQL database using ExtJS and PHP [closed]2019 Community Moderator ElectionHow can I prevent SQL injection in PHP?Which MySQL data type to use for storing boolean valuesPHP: Delete an element from an arrayHow do I connect to a MySQL Database in Python?Should I use the datetime or timestamp data type in MySQL?How to get a list of MySQL user accountsHow Do You Parse and Process HTML/XML in PHP?Reference — What does this symbol mean in PHP?How does PHP 'foreach' actually work?Why shouldn't I use mysql_* functions in PHP?

                    Compiling GNU Global with universal-ctags support Announcing the arrival of Valued Associate #679: Cesar Manara Planned maintenance scheduled April 23, 2019 at 23:30 UTC (7:30pm US/Eastern) Data science time! April 2019 and salary with experience The Ask Question Wizard is Live!Tags for Emacs: Relationship between etags, ebrowse, cscope, GNU Global and exuberant ctagsVim and Ctags tips and trickscscope or ctags why choose one over the other?scons and ctagsctags cannot open option file “.ctags”Adding tag scopes in universal-ctagsShould I use Universal-ctags?Universal ctags on WindowsHow do I install GNU Global with universal ctags support using Homebrew?Universal ctags with emacsHow to highlight ctags generated by Universal Ctags in Vim?

                    Add ONERROR event to image from jsp tldHow to add an image to a JPanel?Saving image from PHP URLHTML img scalingCheck if an image is loaded (no errors) with jQueryHow to force an <img> to take up width, even if the image is not loadedHow do I populate hidden form field with a value set in Spring ControllerStyling Raw elements Generated from JSP tagds with Jquery MobileLimit resizing of images with explicitly set width and height attributeserror TLD use in a jsp fileJsp tld files cannot be resolved