Skip to content
This repository has been archived by the owner on Apr 26, 2024. It is now read-only.

Document looping_call() functionality that will wait for the given function to finish before scheduling another #15772

Merged
merged 3 commits into from
Jun 13, 2023

Conversation

MadLittleMods
Copy link
Contributor

@MadLittleMods MadLittleMods commented Jun 12, 2023

Document looping_call() functionality that will wait for the given function to finish before scheduling another

Thanks to @erikjohnston for clarifying, #15743 (comment)

We don't have to worry about calls stacking up if the given function takes longer than the scheduled time.

Pull Request Checklist

@MadLittleMods MadLittleMods added A-Docs things relating to the documentation T-Task Refactoring, removal, replacement, enabling or disabling functionality, other engineering tasks. labels Jun 12, 2023
…heduling another

Thanks to @erikjohnston for clarifying, #15743 (comment)

We don't have to worry about calls stacking up if the given function takes longer than the scheduled time.
@MadLittleMods MadLittleMods force-pushed the madlittlemods/looping-call-waits-to-finish branch from dc91c4f to ec2c17d Compare June 12, 2023 20:40
@MadLittleMods MadLittleMods changed the title Document that looping_call() will wait for the given function to finish before scheduling another Document looping_call() functionality will wait for the given function to finish before scheduling another Jun 12, 2023
@MadLittleMods MadLittleMods changed the title Document looping_call() functionality will wait for the given function to finish before scheduling another Document looping_call() functionality that will wait for the given function to finish before scheduling another Jun 12, 2023
@@ -116,6 +116,11 @@ def looping_call(

Waits `msec` initially before calling `f` for the first time.

If the function given to `looping_call` returns an awaitable/deferred, the next
Copy link
Contributor Author

@MadLittleMods MadLittleMods Jun 12, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

https://docs.twistedmatrix.com/en/stable/api/twisted.internet.task.LoopingCall.html only mentions deferred but it looks like the source uses maybeDeferred which works with coroutines/awaitables (which makes this accurate)

twisted.internet.task.LoopingCall

If f returns a deferred, rescheduling will not take place until the deferred has fired.

def maybeDeferred(f, *args, **kwargs): (source)

Invoke a function that may or may not return a Deferred or coroutine.

Call the given function with the given arguments. Then:

  • If the returned object is a Deferred, return it.
  • If the returned object is a Failure, wrap it with fail and return it.
  • If the returned object is a types.CoroutineType, wrap it with Deferred.fromCoroutine and return it.
  • Otherwise, wrap it in succeed and return it.
  • If an exception is raised, convert it to a Failure, wrap it in fail, and then return it.

@MatMaul
Copy link
Contributor

MatMaul commented Jun 13, 2023

Thanks for clearing that up, I had a quick look but couldn't decipher if it was working like that.
2 of my PRs are now easier to merge 👼

@MatMaul
Copy link
Contributor

MatMaul commented Jun 13, 2023

I guess this can be un-draft ?

@MadLittleMods MadLittleMods marked this pull request as ready for review June 13, 2023 18:26
@MadLittleMods MadLittleMods requested a review from a team as a code owner June 13, 2023 18:26
@MadLittleMods MadLittleMods merged commit 8ddb2de into develop Jun 13, 2023
@MadLittleMods MadLittleMods deleted the madlittlemods/looping-call-waits-to-finish branch June 13, 2023 21:34
@MadLittleMods
Copy link
Contributor Author

Thanks for the review @MatMaul 🐓

yingziwu added a commit to yingziwu/synapse that referenced this pull request Aug 21, 2023
Please note that this will be the last release of Synapse that is compatible with
Python 3.7 and earlier.
This is due to Python 3.7 now having reached End of Life; see our [deprecation policy](https://matrix-org.github.io/synapse/v1.87/deprecation_policy.html)
for more details.

- Pin `pydantic` to `^1.7.4` to avoid backwards-incompatible API changes from the 2.0.0 release.
  Resolves matrix-org#15858.
  Contributed by @PaarthShah. ([\matrix-org#15862](matrix-org#15862))

- Split out 2022 changes from the changelog so the rendered version in GitHub doesn't timeout as much. ([\matrix-org#15846](matrix-org#15846))

- Improve `/messages` response time by avoiding backfill when we already have messages to return. ([\matrix-org#15737](matrix-org#15737))
- Add spam checker module API for logins. ([\matrix-org#15838](matrix-org#15838))

- Fix a long-standing bug where media files were served in an unsafe manner. Contributed by @joshqou. ([\matrix-org#15680](matrix-org#15680))
- Avoid invalidating a cache that was just prefilled. ([\matrix-org#15758](matrix-org#15758))
- Fix requesting multiple keys at once over federation, related to [MSC3983](matrix-org/matrix-spec-proposals#3983). ([\matrix-org#15770](matrix-org#15770))
- Fix joining rooms through aliases where the alias server isn't a real homeserver. Contributed by @tulir @ Beeper. ([\matrix-org#15776](matrix-org#15776))
- Fix a bug in push rules handling leading to an invalid (per spec) `is_user_mention` rule sent to clients. Also fix wrong rule names for `is_user_mention` and `is_room_mention`. ([\matrix-org#15781](matrix-org#15781))
- Fix a bug introduced in 1.57.0 where the wrong table would be locked on updating database rows when using SQLite as the database backend. ([\matrix-org#15788](matrix-org#15788))
- Fix Sytest environmental variable evaluation in CI. ([\matrix-org#15804](matrix-org#15804))
- Fix forgotten rooms missing from initial sync after rejoining them. Contributed by Nico from Famedly. ([\matrix-org#15815](matrix-org#15815))
- Fix sqlite `user_filters` upgrade introduced in v1.86.0. ([\matrix-org#15817](matrix-org#15817))

- Document `looping_call()` functionality that will wait for the given function to finish before scheduling another. ([\matrix-org#15772](matrix-org#15772))
- Fix a typo in the [Admin API](https://matrix-org.github.io/synapse/latest/usage/administration/admin_api/index.html). ([\matrix-org#15805](matrix-org#15805))
- Fix typo in MSC number in faster remote room join architecture doc. ([\matrix-org#15812](matrix-org#15812))

- Remove experimental [MSC2716](matrix-org/matrix-spec-proposals#2716) implementation to incrementally import history into existing rooms. ([\matrix-org#15748](matrix-org#15748))

- Replace `EventContext` fields `prev_group` and `delta_ids` with field `state_group_deltas`. ([\matrix-org#15233](matrix-org#15233))
- Regularly try to send transactions to other servers after they failed instead of waiting for a new event to be available before trying. ([\matrix-org#15743](matrix-org#15743))
- Fix requesting multiple keys at once over federation, related to [MSC3983](matrix-org/matrix-spec-proposals#3983). ([\matrix-org#15755](matrix-org#15755))
- Allow for the configuration of max request retries and min/max retry delays in the matrix federation client. ([\matrix-org#15783](matrix-org#15783))
- Switch from `matrix://` to `matrix-federation://` scheme for internal Synapse routing of outbound federation traffic. ([\matrix-org#15806](matrix-org#15806))
- Fix harmless exceptions being printed when running the port DB script. ([\matrix-org#15814](matrix-org#15814))

* Bump attrs from 22.2.0 to 23.1.0. ([\matrix-org#15801](matrix-org#15801))
* Bump cryptography from 40.0.2 to 41.0.1. ([\matrix-org#15800](matrix-org#15800))
* Bump ijson from 3.2.0.post0 to 3.2.1. ([\matrix-org#15802](matrix-org#15802))
* Bump phonenumbers from 8.13.13 to 8.13.14. ([\matrix-org#15798](matrix-org#15798))
* Bump ruff from 0.0.265 to 0.0.272. ([\matrix-org#15799](matrix-org#15799))
* Bump ruff from 0.0.272 to 0.0.275. ([\matrix-org#15833](matrix-org#15833))
* Bump serde_json from 1.0.96 to 1.0.97. ([\matrix-org#15797](matrix-org#15797))
* Bump serde_json from 1.0.97 to 1.0.99. ([\matrix-org#15832](matrix-org#15832))
* Bump towncrier from 22.12.0 to 23.6.0. ([\matrix-org#15831](matrix-org#15831))
* Bump types-opentracing from 2.4.10.4 to 2.4.10.5. ([\matrix-org#15830](matrix-org#15830))
* Bump types-setuptools from 67.8.0.0 to 68.0.0.0. ([\matrix-org#15835](matrix-org#15835))
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
A-Docs things relating to the documentation T-Task Refactoring, removal, replacement, enabling or disabling functionality, other engineering tasks.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants