mirror of
https://gitlab.com/veloren/veloren.git
synced 2024-08-30 18:12:32 +00:00
e914c29728
There is a rare bug that recently got triggered more often with the release of xMAC94x/netfixA if the bug triggeres, a Participant never gets cleaned up gracefully. Reason: When `participant_shutdown_mgr` was called it stopped all managers at once. Especially stream_close_mgr and send_mgr. The problem with stream_close_mgr is, it's responsible for gracefully flushing streams when the Participant is dropped locally. So when it was interupted self.streams where no longer flushed gracefully. The next problem was with send_mgr. It is triggering the PrioManager, and the PrioManager is responsible for notifying once a stream is completly flushed. This lead to the problem, that a stream flush could be requested, but was actually never executed (as send_mgr was already down). Solution: 1. when stream_close_mgr is stopped it MUST flush all remaining streams 2. wait for stream_close_mgr to finish before shutting down the send_mgr 3. no longer delete streams when closing the API (this also wasn't tracked in metrics so far) Additionally i added a dependency, so that the network/examples compile again, fixed some spelling. I created a `delete_stream` fn that basically just moved the code over.
44 lines
1.5 KiB
TOML
44 lines
1.5 KiB
TOML
[package]
|
|
name = "veloren_network"
|
|
version = "0.2.0"
|
|
authors = ["Marcel Märtens <marcel.cochem@googlemail.com>"]
|
|
edition = "2018"
|
|
|
|
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
|
|
|
[features]
|
|
metrics = ["prometheus"]
|
|
compression = ["lz-fear"]
|
|
|
|
default = ["metrics","compression"]
|
|
|
|
[dependencies]
|
|
|
|
#serialisation
|
|
bincode = "1.2"
|
|
serde = { version = "1.0" }
|
|
#sending
|
|
crossbeam-channel = "0.4.2"
|
|
# NOTE: Upgrading async-std can trigger spontanious crashes for `network`ing. Consider elaborate tests before upgrading
|
|
async-std = { version = "~1.5", default-features = false, features = ["std", "async-task", "default"] }
|
|
#tracing and metrics
|
|
tracing = { version = "0.1", default-features = false }
|
|
tracing-futures = "0.2"
|
|
prometheus = { version = "0.9", default-features = false, optional = true }
|
|
#async
|
|
futures = { version = "0.3", features = ["thread-pool"] }
|
|
#mpsc channel registry
|
|
lazy_static = { version = "1.4", default-features = false }
|
|
rand = { version = "0.7" }
|
|
#stream flags
|
|
bitflags = "1.2.1"
|
|
lz-fear = { version = "0.1.1", optional = true }
|
|
|
|
[dev-dependencies]
|
|
tracing-subscriber = { version = "0.2.3", default-features = false, features = ["env-filter", "fmt", "chrono", "ansi", "smallvec"] }
|
|
# `uvth` needed for doc tests
|
|
uvth = { version = ">= 3.0, <= 4.0", default-features = false }
|
|
clap = { version = "2.33", default-features = false }
|
|
shellexpand = "2.0.0"
|
|
tiny_http = "0.7.0"
|
|
serde = { version = "1.0", features = ["derive"] } |