Commit Graph
2939 Commits
Author SHA1 Message Date
Carl Lerche c98be229ff rt: unhandled panic config for current thread rt (#4770)
Allows the user to configure the runtime's behavior when a spawned task
panics. Currently, the panic is propagated to the JoinHandle and the
runtime resumes. This patch lets the user set the runtime to shutdown on
unhandled panic.

So far, this is only implemented for the current-thread runtime.

Refs: #4516
2022-06-16 12:54:43 -07:00
gftea 90bc5faa7e net: be more specific about winapi features (#4764) 2022-06-16 09:52:50 +00:00
Richard Zak f26ce08f37 chore: fix spelling (#4769)
Signed-off-by: Richard Zak <[email protected]>
2022-06-15 16:06:50 +00:00
NotAFile d487c1ca34 fs: warn about performance pitfall (#4762) 2022-06-15 08:22:03 +02:00
Carl Lerche f7a64538f7 rt: clean up arguments passed to basic scheduler (#4767)
Extracts the refactor from #4518.

The basic scheduler takes many configuration options as arguments to the
constructor. This cleans it up a bit by defining a `Config` struct and
using that to pass arguments to the constructor.
2022-06-14 18:35:43 -07:00
Erick Tryzelaar 8d29edca24 time: remove src/time/driver/wheel/stack.rs (#4766)
This removes tokio/src/time/driver/wheel/stack.rs. The module was
removed in #3080, but the actual file wasn't removed in it.
2022-06-13 18:14:16 +02:00
George Pyrros 89000ca1da macros: improve the documentation for #[tokio::test] (#4761) 2022-06-13 12:47:42 +00:00
David Barsky 08d49532b4 joinset: rename join_one to join_next (#4755) 2022-06-09 22:41:25 +02:00
Alice Ryhl 340c4dc3b2 chore: prepare Tokio v1.19.2 (#4754) tokio-1.19.2 2022-06-06 17:38:28 +02:00
jefftt 7011a68343 time: add StreamExt::chunks_timeout (#4695) 2022-06-06 16:16:50 +02:00
Alice Ryhl c7280167db sync: fix will_wake usage in Notify (#4751) 2022-06-06 09:40:40 +02:00
Alice Ryhl bac7984417 chore: prepare Tokio v1.19.1 (#4750) tokio-1.19.1 2022-06-05 13:28:42 +02:00
Alice Ryhl a7e7eca893 sync: fix panic in Notified::enable (#4747) 2022-06-05 08:43:58 +02:00
Alice Ryhl 89ccf2ad2b chore: prepare tokio-stream 0.1.9 (#4743) tokio-stream-0.1.9 2022-06-04 22:04:21 +02:00
Alice Ryhl 3f8a690c01 chore: prepare tokio-macros 1.8.0 (#4742) tokio-macros-1.8.0 2022-06-04 22:04:12 +02:00
Alice Ryhl 14c77bc434 chore: prepare tokio-util 0.7.3 (#4744) tokio-util-0.7.3 2022-06-04 22:04:02 +02:00
Alice Ryhl 0241f1c54d chore: fix changelog typo (#4740) 2022-06-03 19:17:12 +00:00
Alice Ryhl 674d77d4ef chore: prepare Tokio v1.19.0 (#4738) tokio-1.19.0 2022-06-03 20:41:16 +02:00
Max IndenandTaiki Endo 42b4c27b88 net: add take_error to TcpSocket and TcpStream (#4739)
Co-authored-by: Taiki Endo <[email protected]>
2022-06-03 19:50:52 +02:00
David KoloskiandDavid Koloski 0d4d3c34f1 sync: replace non-binding if let statements (#4735)
Found some `if let` statements that don't actually bind any variables.
This can make it somewhat confusing as to whether the pattern is binding
the value or being matched against. Switching to `matches!` and equality
comparisons allow these to be removed.

Co-authored-by: David Koloski <[email protected]>
2022-06-03 09:41:16 +02:00
Alice Ryhl 4941fbf7c4 tokio: add 1.18.x as LTS release (#4733) 2022-06-02 12:57:05 +02:00
David KoloskiandDavid Koloski cc6c2f40cb tokio: check page capacity before obtaining base pointer (#4731)
This doesn't cause any issues in practice because this is a private API
that is only used in ways that cannot trigger UB. Indexing into `slots`
is not sound until after we've asserted that the page is allocated,
since that aliases the first slot which may not be allocated. This PR
also switches to using `as_ptr` to obtain the base pointer for clarity.

Co-authored-by: David Koloski <[email protected]>
2022-06-01 21:18:06 +02:00
Aleksey Kladov 925314ba43 doc: clarify semantics of tasks outliving block_on (#4729) 2022-05-31 19:08:53 +00:00
Alice Ryhl f948cd7b33 chore: fix clippy warnings (#4727) 2022-05-31 20:26:32 +02:00
Name1e5s 83d0e7f8b3 runtime: add is_finished method for JoinHandle and AbortHandle (#4709) 2022-05-31 09:22:09 +00:00
Alice Ryhl 5fd1220c73 task: update return value of JoinSet::join_one (#4726) 2022-05-31 09:15:37 +02:00
Eliza Weisman 2bad98f879 task: add join_set::Builder for configuring JoinSet tasks (#4687) 2022-05-30 18:23:40 +02:00
Piotr Sarna 88e8c6239c task: add consume_budget for cooperative scheduling (#4498)
* task: add consume_budget for cooperative scheduling

For cpu-only computations that do not use any Tokio resources,
budgeting does not really kick in in order to yield and prevent
other tasks from starvation. The new mechanism - consume_budget,
performs a budget check, consumes a unit of it, and yields only
if the task exceeded the budget. That allows cpu-intenstive
computations to define points in the program which indicate that
some significant work was performed. It will yield only if the budget
is gone, which is a much better alternative to unconditional yielding,
which is a potentially heavy operation.

* tests: add a test case for task::consume_budget

The test case ensures that the task::consume_budget utility
actually burns budget and makes the task yield once the whole
budget is gone.
2022-05-30 09:15:54 +00:00
Alan Somers 6c0a9942ba metrics: correctly update atomics in IoDriverMetrics (#4725)
Updating an atomic variable with a load followed by a store is racy.  It
defeats the entire purpose of using atomic variables, and can result in
"lost" updates.  Instead, use fetch_add .
2022-05-30 11:14:56 +02:00
estk f6c0405084 sync: add resubscribe method to broadcast::Receiver (#4607) 2022-05-28 20:15:27 +00:00
Gus Wynn 05cbfae177 stream: add cancel-safety docs to StreamExt::next and try_next (#4715) 2022-05-27 10:28:29 +02:00
Eric Zhang 323b63fa04 time: fix example for MissedTickBehavior::Burst (#4713) 2022-05-22 21:22:03 +02:00
Rafael Bachmann 9f4959580f sync: add broadcast to list of channel types (#4712) 2022-05-22 16:46:34 +00:00
Name1e5s 50bd8ad17b chore: fix cargo audit warning by upgrading mockall (#4710) 2022-05-21 15:17:42 +02:00
Alice Ryhl 4675087090 sync: add Notified::enable (#4705) 2022-05-19 16:31:23 +00:00
Alice Ryhl a2112b47d3 chore: update macro output tests for rust 1.61.0 (#4706) 2022-05-19 15:55:11 +00:00
盏一 931a7773de io: refactor out usage of Weak in the io handle (#4656) 2022-05-19 10:24:27 +02:00
David Barsky 3fce06c2cc chore: add Netlify doc previews (#4699) 2022-05-19 09:30:06 +02:00
Aaron Turon 0b8a3c34a1 runtime: make global queue and event polling intervals configurable (#4671)
Adds knobs to the runtime builder to control the number of ticks
between polling the global task queue (fairness) and the event driver
(I/O prioritization).

Both varieties of scheduler already supported these intervals, but they
were defined by private constants. Some workloads benefit from
customizing these values.

Closes #4651
2022-05-18 11:23:53 +02:00
Alice Ryhl ddf2f5fdf6 rt: fix flaky wake_while_rt_is_dropping test (#4698) 2022-05-17 19:20:34 +02:00
Eliza Weisman 052355f064 task: add #[track_caller] to JoinSet/JoinMap (#4697)
## Motivation

Currently, the various spawning methods on `tokio::task::JoinSet` and
`tokio_util::task::JoinMap` lack `#[track_caller]` attributes, so the
`tracing` spans generated for tasks spawned on `JoinSet`s/`JoinMap`s
will have the `JoinSet` spawning method as their spawn location, rather
than the user code that called that method.

## Solution

This PR fixes that by...adding a bunch of `#[track_caller]` attributes.

## Future Work

In the future, we may also want to consider adding additional data to
the task span indicating that the task is spawned on a `JoinSet`...

Signed-off-by: Eliza Weisman <[email protected]>
2022-05-16 16:36:24 +00:00
Finomnis 454ac1c54f ci: enable ASAN in CI (#4696) 2022-05-16 16:57:03 +02:00
Alice Ryhl fa06605e45 Merge 'tokio-util-0.7.x' into master 2022-05-15 10:09:29 +02:00
Alice Ryhl 038de36132 chore: prepare tokio-util 0.7.2 (#4690) tokio-util-0.7.2 2022-05-14 21:06:13 +02:00
Alice Ryhl 42d5a9fcd4 Merge 'tokio-util-0.6.x' into 'tokio-util-0.7.x' 2022-05-14 21:03:16 +02:00
Alice Ryhl cdb132d333 Revert "chore: disable warnings in old CI (#4691)"
This reverts commit b24df49a9d so we can
merge the CHANGELOG changes in #4691 into master.
2022-05-14 20:59:52 +02:00
Alice Ryhl 2659adf5fe chore: prepare tokio-util 0.6.10 (#4691) tokio-util-0.6.10 2022-05-14 20:16:41 +02:00
Finomnis 0105d9971f sync: rewrite CancellationToken (#4652) 2022-05-14 20:16:36 +02:00
Alice Ryhl b24df49a9d chore: disable warnings in old CI (#4691) 2022-05-14 20:16:21 +02:00
Eliza Weisman b1557ea5b2 task: add Builder::{spawn_on, spawn_local_on, spawn_blocking_on} (#4683)
## Motivation

`task::JoinSet` currently has both `spawn`/`spawn_local` methods,
and `spawn_on`/`spawn_local_on` variants of these methods that take a
reference to a runtime `Handle` or to a `LocalSet`, and spawn tasks on
the provided runtime/`LocalSet`, rather than the current one. The
`task::Builder` type is _also_ an API type that can spawn tasks, but it
doesn't have `spawn_on` variants of its methods. It occurred to me that
it would be nice to have similar APIs on `task::Builder`.

## Solution

This branch adds `task::Builder::spawn_on`,
`task::Builder::spawn_local_on`, and `task::Builder::spawn_blocking_on`
methods, similar to those on `JoinSet`. In addition, I did some
refactoring of the internal spawning APIs --- there was a bit of
duplicated code that this PR reduces.

Signed-off-by: Eliza Weisman <[email protected]>
2022-05-14 10:44:47 -07:00