Giter Club home page Giter Club logo

Comments (5)

derekcollison avatar derekcollison commented on July 22, 2024

I will take a closer look at the trace, but in general under spinUpSockerWatchers, the nc.wg.Wait() is there to make sure the readLoop and flusher from the old connection are torn down before the new ones get spun up.

from nats.go.

fraenkel avatar fraenkel commented on July 22, 2024

I understand what the waitgroup is for. You can easily run into situations where it may not complete because the readLoop and flushers have moved to the new connection/buffered writer. It doesn't always happen but it can.

The stack just shows the situation when something similar happens with the parser state.

There is a lot of code checking for the state of the connection, closed, reconnecting, etc... but for most of the routines they will see connected or closed because of the locking and how they are driven.

from nats.go.

derekcollison avatar derekcollison commented on July 22, 2024

I looked briefly, and I think doReconnect() can only proceed at replacing the nc.bw and the connection itself after it is known that readLoop and flusher are shutdown. Will look at moving that logic gate to before reconnect begins in earnest.

from nats.go.

derekcollison avatar derekcollison commented on July 22, 2024

I found a bug here from the last commit which may cause you issues. I am working on this problem (this thread), and found it as I was moving the shutdown logic to before we began processing a reconnect.

https://github.com/apcera/nats/blob/master/nats.go#L1438

from nats.go.

derekcollison avatar derekcollison commented on July 22, 2024

I have it fixed, just an FYI..

from nats.go.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.