The receive loop treated only WSMsgType.CLOSE as the end of a session, but aiohttp reports a peer that has gone away as CLOSED, and it does so immediately and for every subsequent call. Everything that was not CLOSE fell to an else branch that printed a line and went round again, so a console whose bmc restarted became a full speed loop writing one line per iteration: measured at 2.7 million iterations a second, and observed filling 15 GB of log in a quarter of an hour while the daemon stopped answering requests. Treat every message that is not data as the end of the session, clear the connected flag and report the disconnect once. A session that ended any other way than a clean close is recorded in the trace log, unbuffered so that it survives a daemon that does not, rather than printed. Both websocket console plugins carried the same loop. While here, give the openbmc one the parts tsmsol already had: text frames are data rather than a surprise, and the client session is closed when the upgrade fails and when the console does, instead of being leaked.
Confluent
Confluent is a software package to handle essential bootstrap and operation of scale-out server configurations. It supports stateful and stateless deployments for various operating systems.
Check this page for a more detailed list of features.
Confluent is the modern successor of xCAT. If you're coming from xCAT, check out this comparison.
Documentation
Confluent documentation is hosted on: https://xcat2.github.io/confluent-docs/
Download
Get the latest version from: https://xcat2.github.io/confluent-docs/downloads/
Check release notes on: https://xcat2.github.io/confluent-docs/release_notes/
Open Source License
Confluent is made available under the Apache 2.0 license: https://opensource.org/license/apache-2-0
Developers
Want to help? Submit a Pull Request.
Versioning and releases
The top-level VERSION file names the release the current branch is working toward. Build scripts
call ./mkversion, which turns it into the version stamped on packages: the tag itself on a release
tag (4.0.1), otherwise a development version (4.0.1.dev5+gdeadbee, or 4.0.1~dev5+gdeadbee for
the packages that have no setup.py).
mkversion also derives a version from the newest tag reachable from HEAD and uses whichever is
higher, so forgetting to bump VERSION after tagging the current branch cannot walk the version
backwards. Staying ahead of tags on other branches is what VERSION itself is for: patch releases
are tagged on release branches, which master never sees.
Cutting a new series:
- Land the release commit on master and tag
X.Y.0there. - Create branch
X.Yfrom that tag; it inheritsVERSION=X.Y.0. - Only then bump
VERSIONon master. Doing it before step 2 leaves the release branch on the wrong series.
Patch releases land on branch X.Y and are tagged X.Y.Z there; no VERSION edit is needed.