Dean Herbert
f510ef9153
Move previousContext
assign within lock
to make things look safer
...
Not an actual requirement, but no harm.
2021-07-05 10:49:56 +09:00
Bartłomiej Dach
3291f15dcc
Mention GetForWrite()
as another alternative to Context
accesses
2021-07-04 12:08:15 +02:00
Bartłomiej Dach
b89521314f
Mention alternatives to Context
when not on update thread in xmldoc
2021-07-04 12:07:34 +02:00
Dean Herbert
3ec7dc3bb9
Update tests in line with thread safety check
2021-07-04 17:59:39 +09:00
Dean Herbert
567e9f33a9
Fix thread safety of realm Refresh
operation
...
Due to the lack of locking, there was a chance the the update thread
`context` was retrieved just before the `flushContexts` call, followed
by `.Refresh()` being run while the blocking behaviour was invoked.
This can be seen in test failures such as
https://ci.appveyor.com/project/peppy/osu/builds/39859786/tests .
As an aside, I tried multiple different methods to avoid `lock()` on the
update thread but they felt flaky. The overhead of lock when there's no
contention is reportedly around 30-50ns, so likely not of concern. We
can address it at a later point if it becomes one.
2021-07-04 16:24:43 +09:00
Bartłomiej Dach
8a23dfa6f5
Fix optimised import path buffering events without flush
2021-07-03 17:58:12 +02:00
Dean Herbert
2f1203085b
Also add logging of realm block/flush operations
2021-06-29 20:23:25 +09:00
Dan Balasescu
a9084db665
Merge pull request #13673 from peppy/import-early-checksum-abort
...
Shortcut import process to speed up duplicate imports
2021-06-28 19:55:09 +09:00
Dan Balasescu
92fcf90768
Merge branch 'master' into import-early-checksum-abort
2021-06-28 19:29:08 +09:00
Dean Herbert
d4ea73d727
Simplify disposal exceptions
2021-06-28 16:17:09 +09:00
Dean Herbert
f78cedd0e1
Reorder methods and add xmldoc for BlockAllOperations
2021-06-28 16:16:40 +09:00
Dean Herbert
90f0bc87f5
Add safety against double disposal
2021-06-28 16:12:21 +09:00
Dean Herbert
842f033522
Remove no longer necessary exception
2021-06-28 16:11:55 +09:00
Dean Herbert
0d2bc4fc5f
Merge branch 'master' into fix-realm-state-change-crashes
2021-06-28 16:03:58 +09:00
Dean Herbert
c281e43cd8
Remove Dispose()
special case and add explicit exception to make debugging issues non-deadlock
2021-06-28 15:04:14 +09:00
Dean Herbert
a3946a1265
Fix typo in newly added xmldoc
...
Co-authored-by: Salman Ahmed <frenzibyte@gmail.com>
2021-06-28 14:07:21 +09:00
Dean Herbert
4d6002ab88
Remove redundant string interpolation (and mark all local logging strings as verbatim)
2021-06-28 12:16:15 +09:00
Dean Herbert
4a557e73a7
Add logging to help understand existing case skips better
2021-06-28 10:42:42 +09:00
Dean Herbert
90b87cbb9e
Add back unidirectional online id check
2021-06-28 10:11:27 +09:00
Dean Herbert
9a96cd4a1d
Revert "Remove comparison of online beatmap IDs during dedupe checks"
...
This reverts commit 15af28d2a0
.
2021-06-28 09:54:18 +09:00
Dean Herbert
e755dcc34d
Add log method for new flow
2021-06-27 20:37:12 +09:00
Dean Herbert
f470b7095d
Move private method down in class
2021-06-27 20:36:01 +09:00
Dean Herbert
f216404952
Fix missing undelete call on using existing
2021-06-27 20:22:48 +09:00
Dean Herbert
9120321731
Add comments mentioning shortcomings and avoid potential double check
2021-06-27 19:07:35 +09:00
Dean Herbert
44f875b802
Bypass optimised existing check in SkinManager
(due to custom hashing function)
2021-06-27 16:35:13 +09:00
Dean Herbert
e493685c14
Add optimised existing check earlier in import process
2021-06-27 16:34:40 +09:00
Dean Herbert
15af28d2a0
Remove comparison of online beatmap IDs during dedupe checks
2021-06-27 14:48:57 +09:00
Dean Herbert
d1f852d102
Make Populate
abstract to avoid unnecessary base call async complexity
2021-06-27 14:29:02 +09:00
Dean Herbert
63ab40ec24
Fix potential deadlocking behaviour (and convert ResetEvent
to Semaphore
)
2021-06-24 14:37:26 +09:00
Dean Herbert
df703b68ec
Merge branch 'master' into realm-key-binding-store
2021-05-25 13:41:48 +09:00
Dean Herbert
8f5b28d264
Fix "folder missing" message showing incorrectly for beatmaps folder
2021-05-20 13:56:18 +09:00
Lucas A
8530b31e39
Use bitshifts for enum values instead of literal values.
2021-05-17 21:02:45 +02:00
Lucas A
97952bc3f0
Fix backwards stable install resolution logic.
2021-05-17 18:39:04 +02:00
Lucas A
6110a847aa
Simplify import ordering logic by making beatmapImportTask non-nullable.
2021-05-17 16:30:13 +02:00
Lucas A
41fafdf643
Remove now unreachable code paths.
2021-05-17 12:55:59 +02:00
Lucas A
dabe8bd4c7
Fix code inspections and remove now unused code.
2021-05-17 12:55:58 +02:00
Lucas A
a7b740fd1d
Reword ImportFromStablePopup and display the popup regardless of whether a stable install is detected.
2021-05-17 12:55:58 +02:00
Lucas A
8ba50b1854
Bring back injected dependency incorrectly marked as unused.
2021-05-17 12:55:58 +02:00
Lucas A
481b0a0125
Add StableDirectoryLocationDialog
2021-05-17 12:55:57 +02:00
Lucas A
325a689d65
Order imports depending on beatmap imports if any is running.
2021-05-17 12:55:57 +02:00
Lucas A
851e33fd15
Hook up StableImportManager.
2021-05-17 12:55:57 +02:00
Lucas A
5d5b1e1f0e
Add StableImportManager
2021-05-17 12:55:56 +02:00
Dean Herbert
1742ee89e0
Fix incorrect xmldoc for DeleteFile
2021-05-11 18:39:14 +09:00
Dean Herbert
05e3a73a7d
Fix import cancellation not correctly being forwarded to import notification
2021-04-28 16:09:50 +09:00
smoogipoo
6560dc2d1f
Fix exported replays being wrapped in zip packages
2021-04-26 20:46:44 +09:00
Dean Herbert
b9ee63ff89
Remove public
keywords from interface implementations
2021-04-24 02:13:31 +09:00
Dean Herbert
ecde6137e0
Add missing active usage counter increment
2021-03-31 15:16:01 +09:00
Dean Herbert
37bf79e8a4
Remove unused automapper setup for the time being
2021-03-31 15:10:05 +09:00
Dean Herbert
f8cea5cae3
Merge branch 'master' into realm-migration-operation-blocking
2021-03-26 17:07:31 +09:00
Bartłomiej Dach
a16c0641b2
Revert EF Core to version 2.2
...
This reverts commit f3faad74d5
, reversing
changes made to 712e7bc7bf
.
Several issues arose after migrating to 5.0, including, but possibly not
limited to, performance regressions in song select, as well as failures
when attempting to save beatmaps after metadata changes in the editor.
2021-03-21 11:05:15 +01:00
Dean Herbert
03592fa696
Merge branch 'master' into realm-migration-operation-blocking
2021-03-19 21:33:26 +09:00
Dean Herbert
1e519f0d31
Fix seemingly innocent logic change causing breakage in score imports
2021-03-15 14:20:59 +09:00
Dean Herbert
fce21f23d6
Add comments marking workarounds required for EFcore 5
2021-03-15 13:29:26 +09:00
Dean Herbert
2904f479c6
Share file lookup workaround in ArchiveModelManager with workaround extensions class
2021-03-15 13:26:14 +09:00
Dean Herbert
79d3379f55
Reformat application of configuration
2021-03-15 13:20:22 +09:00
Dean Herbert
8a35533889
Add fall-through case to catch a potential requery for unsupported model type
2021-03-15 13:11:58 +09:00
Dean Herbert
2bdffd1004
Move skin requery logic into extension methods
2021-03-15 13:11:58 +09:00
Dean Herbert
900da7b891
Rename and refactor extenion methods to be easier to read
2021-03-15 13:11:58 +09:00
Roman Kapustin
28ef64b62a
Explicitly specify SingleQuery behavior
2021-03-14 21:43:27 +03:00
Roman Kapustin
0a1e325fc7
Extract requerying of navigational properties from DbContext
2021-03-14 19:34:53 +03:00
Roman Kapustin
5a4b0174b1
Ignore MultipleCollectionIncludeWarning
2021-03-11 22:40:35 +03:00
Roman Kapustin
47b80d2474
Workaround InvalidOperation exceptions
2021-03-11 20:51:54 +03:00
Roman Kapustin
f1302d1600
Update Microsoft.EntityFrameworkCore
2021-03-11 19:23:56 +03:00
Dean Herbert
b1cd01ceb8
Apply ConfigureAwait changes to game side
2021-03-08 14:36:35 +09:00
Dean Herbert
fa95929121
Remove easy to remove finalizers
2021-03-02 16:07:09 +09:00
Dean Herbert
7e6bd0e995
Fix "failed to import" message showing when importing from a stable install with no beatmaps
2021-02-26 17:30:59 +09:00
Dean Herbert
0196ee882a
Redirect batch imports to a separate task scheduler to avoid contention with interactive actions
2021-02-17 19:41:18 +09:00
Dean Herbert
c1db33e075
Improve some xmldoc on ArchiveModelManager for methods which are not going to trigger user interactive flow
2021-02-17 19:40:56 +09:00
Dean Herbert
a080a9bdbc
Merge pull request #11603 from Game4all/handle-stable-imports-custom-songs-folder
...
Handle beatmap import from a stable installation with a custom Songs directory
2021-02-12 21:42:36 +09:00
Dean Herbert
5f23bd7259
Revert most of the changes to ArchiveModeManager by using better code
2021-02-12 12:48:32 +09:00
Lucas A
383c40b992
Address remaining reviews suggestions.
2021-01-26 20:35:42 +01:00
Lucas A
043385f919
Rename const and fix unintended tabbing.
2021-01-26 18:45:04 +01:00
Lucas A
9f9206726a
Fix typos.
2021-01-26 18:11:54 +01:00
Lucas A
51d4da565c
Fix ArchiveModelManagers lookup paths.
2021-01-24 22:25:49 +01:00
Lucas A
d71ac83428
Use StableStorage in ArchiveModelManager.
2021-01-24 19:46:10 +01:00
Dean Herbert
d69a4914e0
Add method to block all realm access during migration operation
2021-01-22 17:28:47 +09:00
Dean Herbert
47a9d2b1c2
Add missing licence header
2021-01-21 20:53:16 +09:00
Dean Herbert
34a7ce912e
Correctly close context before attempting migration
2021-01-21 19:02:09 +09:00
Dean Herbert
f6c2009509
Remove unused using
2021-01-19 20:10:10 +09:00
Dean Herbert
68f2e7f61a
Use realm support for Guid
2021-01-19 18:22:36 +09:00
Dean Herbert
f1a785f407
Merge branch 'master' into realm-key-binding-store
2021-01-19 18:22:34 +09:00
Salman Ahmed
dc91cebce9
Merge branch 'master' into multiplayer-beatmap-tracker
2021-01-18 19:15:45 +03:00
Bartłomiej Dach
1d7be6a604
Merge branch 'master' into android-multiple-import-support-suppot
2021-01-16 23:13:11 +01:00
Salman Ahmed
96feaa027d
Make ArchiveModelManager
import method overridable (for testing purposes)
2021-01-17 00:01:11 +03:00
Bartłomiej Dach
7296a6dd84
Merge branch 'master' into realm-key-binding-store
2021-01-16 16:48:54 +01:00
Bartłomiej Dach
ddc63662ba
Dispose realm in RealmWriteUsage cleanup
2021-01-16 16:39:04 +01:00
Dean Herbert
86f66727de
Update KeyBinding usages in line with interface changes
2021-01-15 14:57:01 +09:00
Dean Herbert
3e366b1f15
Ensure the main realm context is closed when the factory is disposed
2021-01-15 14:26:06 +09:00
Dean Herbert
df08d964a5
Mark the types which have been migrated in OsuDbContext
2021-01-14 16:31:18 +09:00
Dean Herbert
8a08d3f4ef
Fix transactions not actually being committed
2021-01-14 16:13:10 +09:00
Dean Herbert
af1509d892
Remove unused variable (but add back pending writes counter)
2021-01-14 15:51:19 +09:00
Dean Herbert
674e78fd93
Fix broken xmldoc
2021-01-13 18:38:30 +09:00
Dean Herbert
9bf9a8c351
Remove Live<> wrapper until it is needed
2021-01-13 18:36:37 +09:00
Dean Herbert
8442b34e84
Tidy up write usage class
2021-01-13 18:36:37 +09:00
Dean Herbert
5fa3a22f28
Remove unused RealmBackedStore base class
2021-01-13 18:36:37 +09:00
Dean Herbert
9d744d629f
Update existing usages to use the main realm context where applicable
2021-01-13 18:36:37 +09:00
Dean Herbert
542f535247
Pull out thread local contexts and have main realm refresh in update loop
2021-01-13 18:36:37 +09:00
Dean Herbert
192e58e0c6
Update all read queries to use direct realm subscriptions/queries
2021-01-13 18:36:37 +09:00
Dean Herbert
46a1d99c74
Allow detach to be run against an IQueryable directly
2021-01-12 17:01:16 +09:00
Dean Herbert
f0a9688baa
Remove unnecessary mapped type
2021-01-12 15:50:09 +09:00
Dean Herbert
7769d95e7b
Add xmldoc for extension methods
2021-01-12 15:48:26 +09:00
Dean Herbert
ff16d2f490
Mark classes nullable
2021-01-12 15:21:02 +09:00
Dean Herbert
2e4c3c8e39
Avoid closing initial context after migrations (unnecessary)
2021-01-12 14:45:36 +09:00
Dean Herbert
0dca9c8c46
Tidy up RealmContextFactory; remove delete/dispose method which wouldn't work due to threading
2021-01-12 14:45:36 +09:00
Dean Herbert
8cbad1dc1c
Add logging of opened and created contexts
2021-01-12 14:45:36 +09:00
Dean Herbert
ffb42c37df
Move schema version to const
2021-01-12 14:45:36 +09:00
Dean Herbert
0789621b85
Elaborate on comment mentioning migrations
2021-01-12 14:45:36 +09:00
Dean Herbert
fc55d67c66
Add helper method for detaching lists from realm
2021-01-12 14:45:36 +09:00
Dean Herbert
d810af82ec
Expose Live.Detach() method for ease of use
2021-01-12 14:45:36 +09:00
Dean Herbert
dd50b5870e
Move extensions methods into own class
2021-01-12 14:45:36 +09:00
Dean Herbert
6736db327a
Remove scheduler being passed in for now
2021-01-12 14:45:36 +09:00
Dean Herbert
a13b6abcff
Remove incorrect default specification from IRealmFactory interface
2021-01-12 14:45:36 +09:00
Dean Herbert
70689eee2b
Perform initial lookup if original is not managed
2021-01-12 14:45:36 +09:00
Dean Herbert
05ca016deb
Make Live implement IHasGuidPrimaryKey
2021-01-12 14:45:36 +09:00
Dean Herbert
20584c9e16
Add full xmldoc for Live class
2021-01-11 19:28:19 +09:00
Dean Herbert
9f64f6059f
Rename RealmWrapper to Live
2021-01-11 16:31:36 +09:00
Dean Herbert
5bb4d35982
Make RealmWrapper nullable enabled
2021-01-11 16:31:36 +09:00
Dean Herbert
cdb3d20fc6
Remove unnecessary warning suppression
2021-01-11 16:31:36 +09:00
Dean Herbert
6c90f9ceed
Move RealmWrapper to own file
2021-01-11 16:31:36 +09:00
Dean Herbert
86daf65630
Fix primary key not being populated for KeyBinding
2021-01-11 16:31:35 +09:00
Dean Herbert
a77519c6bd
Store KeyBinding action to its own field in realm
...
Also improve the Query method for action types by using generic field
2021-01-11 15:52:49 +09:00
Dean Herbert
382a40b243
Tidy up some missed inspections in RealmContextFactory
2021-01-11 15:52:49 +09:00
Dean Herbert
845d5cdea2
Switch guid to store as string until fody issues are resolved
...
See
https://github.com/realm/realm-dotnet/issues/740#issuecomment-755898968
2021-01-11 15:52:49 +09:00
Dean Herbert
ae76eca564
Add basic realm migration support
2021-01-11 15:52:49 +09:00
Dean Herbert
5d7ab4a7f1
Rename global statistics to be specific to realm
2021-01-11 15:52:49 +09:00
Dean Herbert
9cfede2e7e
Setup context, write usage, wrapper classes
2021-01-11 15:52:49 +09:00
Lucas A
324f80d994
Fix merge conflicts.
2021-01-02 19:14:10 +01:00
Bartłomiej Dach
a376a23ed7
Merge branch 'master' into fix-leaderboard-user-handling
2020-12-28 13:43:53 +01:00
Dean Herbert
545dcac4ec
Add null hinting on UserLookupCache query method
2020-12-28 20:13:24 +09:00
Dean Herbert
5ca9a6a980
Add xmldoc on UserLookupCache's lookup method
2020-12-28 20:05:48 +09:00
Dean Herbert
4d61c143db
Fix lookup cache throwing a null reference if no matches were successful
2020-12-28 15:03:44 +09:00
Lucas A
926281831b
Fix missing XMLDoc bit.
2020-12-19 10:36:27 +01:00
Lucas A
5d7294451f
Refactor Import() overload to take a list of import tasks instead.
2020-12-16 14:28:16 +01:00
Dean Herbert
58d7e41978
Enable nullable on ImportTask
2020-12-08 12:52:34 +09:00
Dean Herbert
77279a7e56
Update stale xmldoc on import method
...
Co-authored-by: Bartłomiej Dach <dach.bartlomiej@gmail.com>
2020-12-08 12:48:59 +09:00
Dean Herbert
eb38bc4b4c
Add the ability to import into ArchiveModelManagers from a stream
2020-12-07 18:09:18 +09:00
Dean Herbert
009d666241
Use dictionary to avoid linq overhead
2020-11-17 10:57:11 +09:00
smoogipoo
85b0f71467
Handle duplicate user IDs within the same batch
2020-11-16 21:17:43 +09:00
smoogipoo
87bf168718
Use queue instead of list
2020-11-16 20:52:51 +09:00
smoogipoo
1b1f4c9c09
Refactor user request to fix threadsafety issues
2020-11-16 20:35:22 +09:00
Dean Herbert
4d6f0a8ea7
Fix API request error handling
2020-11-09 19:42:00 +09:00
Dean Herbert
dc69eefa51
Use HashSet instead of ConcurentBag
2020-11-09 11:54:28 +09:00
Dean Herbert
90ce1bd5f0
Add missing async suffix
2020-11-09 10:40:16 +09:00
Dean Herbert
4bbd3fe886
Handle null result
2020-11-06 18:37:27 +09:00
Dean Herbert
c97c6bbf52
Add and consume user cache class
2020-11-06 17:00:29 +09:00
Dean Herbert
d3a303e251
Use CheckExists function
2020-11-06 16:57:09 +09:00
Dean Herbert
b69ada64e8
Update BeatmapDifficultyCache to use base implementation logic
2020-11-06 14:31:21 +09:00
Dean Herbert
a2606d31c7
Move lookup/storage/compute logic to base class (and consume in ScorePerformanceCache)
2020-11-06 13:51:41 +09:00
Dean Herbert
0103b12575
Add basic base class to begin to standardise function across caching components
2020-11-06 13:26:39 +09:00
Bartłomiej Dach
2b0bea535e
Resolve CA1805 inspections
...
"Member is explicitly initialized to its default value"
2020-11-01 18:47:40 +01:00