2940 Commits

Author SHA1 Message Date
b-naber
d8fb721de2
task: improve LocalPoolHandle (#4680) 2022-06-17 18:37:00 +02:00
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 <richard@profian.com>
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 Inden
42b4c27b88
net: add take_error to TcpSocket and TcpStream (#4739)
Co-authored-by: Taiki Endo <te316e89@gmail.com>
2022-06-03 19:50:52 +02:00
David 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 <dkoloski@google.com>
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 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 <dkoloski@google.com>
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 <eliza@buoyant.io>
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 b24df49a9d26057b44a869c6effce494ec10dd35 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