1
0
mirror of https://github.com/ppy/osu.git synced 2024-11-18 09:32:53 +08:00
Commit Graph

82 Commits

Author SHA1 Message Date
Dean Herbert
4526f8c07d Move database backup creation to async thread where possible 2022-06-16 17:01:17 +09:00
Dean Herbert
739a696467 Ensure reading of existing databases when making backups doesn't create a file 2022-06-16 16:48:06 +09:00
Dean Herbert
f23ddfe6cc Move remaining realm classes out of Stores namespace 2022-06-15 21:56:00 +09:00
Dean Herbert
1b4c89c418 Update realm to latest version
Contains minor changes to async usage in line with upstream API changes.

I believe a feedback issue we were seeing with offset changes (the only
component using async write flow) may have been resolved by these
upstream changes (see [release
notes](https://github.com/realm/realm-dotnet/releases/tag/10.14.0)) but
am not investigating further just yet.
2022-06-03 14:16:10 +09:00
Dean Herbert
218642c300 Update unsafe file write usages 2022-05-16 18:05:27 +09:00
Dean Herbert
33f024212f Fix realm refetch operations potentially being unsafe
As seen in test failure https://github.com/ppy/osu/runs/6357384721?check_suite_focus=true.
2022-05-10 21:04:30 +09:00
Dean Herbert
975883da5c Move all usages of client.realm filename to a single const 2022-03-30 13:34:48 +09:00
Dean Herbert
0433d2fe6a Add safety to realm instance retrieval in RealmAccess 2022-03-29 11:40:58 +09:00
Dean Herbert
b04ca111c6 Allow realm subscriptions to be initiated from a non-update thread 2022-03-24 23:41:07 +09:00
Dean Herbert
6565c95b17 Remove unused variable 2022-03-08 18:19:54 +09:00
Dean Herbert
0718a55ad0 Add flow to allow recovery after running an older release (with a different realm database version)
As brought up in https://github.com/ppy/osu/discussions/17148
2022-03-08 18:15:28 +09:00
Bartłomiej Dach
0fbc018a42
Remove redundant string interpolation prefixes 2022-03-03 20:21:09 +01:00
Dean Herbert
35f532fefa Add ability to watch properties via a RealmAccess helper method 2022-03-03 17:42:40 +09:00
Dean Herbert
047e801da9 Store and retrieve offset from realm 2022-03-01 20:12:59 +09:00
Dean Herbert
acf8db13ac Store user settings to realm 2022-03-01 18:44:15 +09:00
Dean Herbert
9a117467b5 Add RealmAccess.WriteAsync method 2022-03-01 18:44:05 +09:00
Dean Herbert
7fa5842783 Add global statistics output for all realm reads/writes 2022-03-01 18:31:18 +09:00
Dean Herbert
885fb92aad Move final empty result set sending to post-compact 2022-01-26 17:21:57 +09:00
Dean Herbert
791ea0308f Add flag to guard against deadlocks during blocking operations 2022-01-26 17:09:28 +09:00
Dean Herbert
11f0f3c17d Revert "Move final result set firing to before the update realm is disposed"
This reverts commit 24bcba6418.
2022-01-26 16:21:24 +09:00
Dean Herbert
24bcba6418 Move final result set firing to before the update realm is disposed
Without this, if any registered callback attempts to access
`RealmAccess.Realm` when handling the empty set callback, it will
deadlock the game.
2022-01-26 15:57:06 +09:00
Dean Herbert
5ea781faef Send unsubscribe actions to synchronization context for consistency and safety 2022-01-26 15:24:53 +09:00
Dean Herbert
91e0d1021f Merge branch 'master' into fix-out-of-order-events-on-block-fail 2022-01-26 15:21:10 +09:00
Dean Herbert
4a9f4eecba Use blocking calls to SynchronizationContext to guarantee order of execution 2022-01-25 20:49:52 +09:00
Dean Herbert
1bb1366c9f Fix notification reset events potentially arriving out of order if a block operation times out 2022-01-25 16:26:06 +09:00
Dan Balasescu
7f2e66298b
Merge branch 'master' into realm-subscription-tracking 2022-01-25 16:03:21 +09:00
Dean Herbert
5fb9b58c9b Add tracking of total subscriptions 2022-01-25 14:51:41 +09:00
Dean Herbert
9ad4d66e4d Merge branch 'realm-clean-up' into realm-block-timeout-assert-failure 2022-01-25 13:58:36 +09:00
Dean Herbert
a5c76a9647 Fix a few more cases of "context" terminology usage 2022-01-25 13:56:47 +09:00
Dean Herbert
6f4c337a56 Fix a failed BlockAllOperations leaving update realm in unretrieved state
If the operation timed out on..

```csharp
   throw new TimeoutException(@"Took too long to acquire lock");
```

..from an update thread, it would not restore the update context.

The next call would then fail on the assert that ensures a non-null
context in such cases.

Can add test coverage if required.
2022-01-24 20:53:29 +09:00
Dean Herbert
f30894840c Update terminology to realm "instance" rather than "context"
This matches the terminology used by realm themselves, which feels
better.
2022-01-24 20:38:38 +09:00
Dean Herbert
6eb2c28e41 Rename RealmContextFactory to RealmAccess 2022-01-24 20:38:07 +09:00