Dean Herbert
997c13f643
Add locking over realmSubscriptionsResetMap
for sanity
2022-01-24 13:36:51 +09:00
Dean Herbert
351c766ea1
Fix one remaining instance of realm query as property
2022-01-23 23:20:03 +09:00
Dean Herbert
deb1670862
Use Array.Empty
instead of constructed list
2022-01-23 23:18:50 +09:00
Dean Herbert
249f0f9697
Add more lengthy comment explaining cyclic avoidance
...
Co-authored-by: Bartłomiej Dach <dach.bartlomiej@gmail.com>
2022-01-23 23:15:39 +09:00
Dean Herbert
5e7993c35a
Post disposal to synchronisation context
2022-01-23 20:43:25 +09:00
Dean Herbert
e9e3e024a1
Update all usages of QueryAsyncWithNotifications
to use new Register
pathway
2022-01-23 20:28:04 +09:00
Dean Herbert
61cef42be9
Proof of concept realm subscriptions via Register
2022-01-23 20:28:04 +09:00
Dean Herbert
f39ff1eacb
Add unregistration on blocking
...
This is the first part of the requirement of sending a `ChangeSet` event
to ensure correct state during blocking time
2022-01-23 20:27:57 +09:00
Dean Herbert
bd0eda7e90
Use method instead of property for realm query retrieval
2022-01-23 18:01:39 +09:00
Dean Herbert
70a120ea8a
Add missing lock coverage when using subscriptionActions
dictionary
2022-01-23 18:00:24 +09:00
Dean Herbert
6a076a684e
Merge branch 'realm-context-use-update-when-feasible' into realm-stable-subscriptions
2022-01-22 13:14:25 +09:00
Dean Herbert
25dbe6b27c
Fix unused null assignment
2022-01-22 12:58:30 +09:00
Dean Herbert
cdcf0947e6
Merge branch 'master' into realm-context-use-update-when-feasible
2022-01-22 12:09:18 +09:00
Dean Herbert
7025191fdd
Move target field outside of Run
usage
...
Co-authored-by: Salman Ahmed <frenzibyte@gmail.com>
2022-01-22 12:02:44 +09:00
Dean Herbert
b23f4674b1
Update outdated exception message
...
Co-authored-by: Salman Ahmed <frenzibyte@gmail.com>
2022-01-22 12:02:18 +09:00
Dean Herbert
8ef50ff42d
Add safety to ensure RealmLiveUnmanaged
is not used with managed instances
2022-01-22 02:13:08 +09:00
Dean Herbert
ad3a01dc06
Use a more reliable method of reviving the update thread realm after blocking
2022-01-21 22:44:56 +09:00
Dean Herbert
3b11235d3c
Fix potentially cyclic subscription registration if a subscription's delegate accesses Context
2022-01-21 20:45:10 +09:00
Dean Herbert
1f157d729d
Update existing subscriptions to new style
...
Fix missing detach calls in `MusicController`
2022-01-21 20:05:03 +09:00
Dean Herbert
45aea9add5
Implement full subscription flow
2022-01-21 19:06:23 +09:00
Dean Herbert
18bf690a30
Add Register
method for subscription purposes and update safeties
2022-01-21 19:06:18 +09:00
Dean Herbert
8f1dfa33a2
Merge branch 'master' into realm-context-use-update-when-feasible
2022-01-21 18:03:09 +09:00
Dean Herbert
495636538f
Add forced refresh on GetAllUsableBeatmapSets()
...
This is commonly used in tests in a way where it's not feasible to
guarantee correct results unless a refresh is called. This method
shouldn't really be used outside of tests anyway, but that's for a
folow-up effort.
2022-01-21 17:33:29 +09:00
Dean Herbert
81b5717ae7
Fix RealmLive
failing to retrieve due to lack of refresh
2022-01-21 17:33:03 +09:00
Dean Herbert
d2655c0825
Fix RealmLive
not necessarily being in refreshed state due to potentially using update context
2022-01-21 17:27:30 +09:00
Dean Herbert
114c9e8c1f
Update all usages of CreateContext
to use either Run
or Write
2022-01-21 17:27:08 +09:00
Dean Herbert
da0a803e6c
Add RealmContextFactory.Write
helper method
2022-01-21 17:08:05 +09:00
Dean Herbert
a59105635e
Make CreateContext
private
2022-01-21 16:40:20 +09:00
Dean Herbert
dde10d1ba2
Remove unused IRealmFactory
interface
2022-01-21 16:38:07 +09:00
Dean Herbert
3bcdce128c
Use dictionary add for safety
2022-01-21 15:29:21 +09:00
Dean Herbert
ff4f40db8a
Merge branch 'master' into carousel-performance-n
2022-01-21 15:27:42 +09:00
Dan Balasescu
c4f24ef96c
Merge pull request #16542 from peppy/carousel-search-performance-less-simple
...
Avoid performing full filter when updating carousel beatmap sets
2022-01-21 15:05:30 +09:00
Dan Balasescu
d6d9efae60
Merge pull request #16541 from peppy/carousel-search-performance-simple
...
Avoid performing keyword filtering at song select unless keywords are specified
2022-01-21 13:35:43 +09:00
Dean Herbert
bed7b69464
Apply NRT to CarouselGroup
2022-01-21 13:26:29 +09:00
Dean Herbert
5b24800b0e
Avoid applying filter in UpdateBeatmapSet
flow
2022-01-21 13:26:25 +09:00
Dean Herbert
45bf35c425
Avoid performing keyword filtering at song select unless keywords are specified
2022-01-21 12:26:24 +09:00
Dean Herbert
a5d2047f05
Fix various cases of creating realm contexts from update thread when not necessary
2022-01-21 01:44:56 +09:00
Dean Herbert
0c9eb3ad61
Add realm factory helper methods to run work on the correct context
...
Avoids constructing a new `Realm` instance when called from the update
thread without worrying about disposal.
2022-01-21 01:33:47 +09:00
Dean Herbert
7aad2780b1
Add retry logic for realm backup creation
2022-01-21 00:46:53 +09:00
Dean Herbert
079b2dfc42
Create backup of databases before opening contexts
...
Attempt to avoid file IO issues.
Closes #16531 .
2022-01-21 00:46:53 +09:00
Dean Herbert
ba31ddee01
Revert beatmapSets
reference to fix tests
...
New version changed order.
2022-01-21 00:34:12 +09:00
Dean Herbert
80f3a67876
Use for
instead of foreach
to avoid enumerator overhead
2022-01-20 22:21:00 +09:00
Dean Herbert
0b93f3c88f
Add <Guid,CarouselBeatmapSet>
dictionary to speed up update operations in carousel
2022-01-20 22:12:49 +09:00
Dean Herbert
9a864267d2
Fix CarouselGroupEagerSelect
not invoking subclassed AddChild
from AddChildren
calls
2022-01-20 21:57:16 +09:00
Dean Herbert
a8ce2c5edf
Detach before sending BeatmapSetInfo
to any handling method
2022-01-20 21:14:10 +09:00
Dan Balasescu
1a20725162
Merge pull request #16529 from peppy/fix-realm-subscription-overhead
...
Remove all calls to `Realm.Refresh` to fix blocking overhead from subscriptions
2022-01-20 20:58:11 +09:00
Dan Balasescu
c986c1b702
Merge pull request #16523 from peppy/realm-async-carousel-load
...
Use asynchronous loading for beatmap carousel again
2022-01-20 20:55:48 +09:00
Dean Herbert
5df46d0a54
Remove all calls to Realm.Refresh
to fix blocking overhead from subscriptions
...
Turns out this is not required if realm is aware of a
`SynchronizationContext`. See
https://github.com/realm/realm-dotnet/discussions/2775#discussioncomment-2005412
for further reading.
2022-01-20 20:23:18 +09:00
Dean Herbert
b1cf3befa6
Fix incorrect query in comment
2022-01-20 18:36:20 +09:00
Dan Balasescu
cab63830a1
Merge pull request #16527 from peppy/remove-parameterless-beatmapinfo-ctor-usage
...
Avoid constructor allocation/GC overhead in realm implicit constructors
2022-01-20 18:11:35 +09:00