Commit Graph

41 Commits

Author SHA1 Message Date
Joakim Lindqvist
449c4ea62f Unreal Cloud DDC - polished some logging and error handling from running metrics calculations
#rb none

[CL 28221995 by Joakim Lindqvist in ue5-main branch]
2023-09-26 08:14:00 -04:00
Joakim Lindqvist
3bda16c9b5 Unreal Cloud DDC - Added test that we can enumerate buckets without throwing and fixed issue with it (missing parameter ctor)
#rb none

[CL 28220915 by Joakim Lindqvist in ue5-main branch]
2023-09-26 06:55:29 -04:00
Joakim Lindqvist
ac205b30b4 Unreal Cloud DDC - Further fixes to issues listing buckets during metrics calculations
#rb none

[CL 28220495 by Joakim Lindqvist in ue5-main branch]
2023-09-26 06:18:26 -04:00
Joakim Lindqvist
1e4abf7842 Unreal Cloud DDC - Fixed issue listing ref buckets in Scylla
#rb none

[CL 28220097 by Joakim Lindqvist in ue5-main branch]
2023-09-26 05:54:57 -04:00
Joakim Lindqvist
5a13dbcb9a Unreal Cloud DDC - Delete last access tracking of object when we are deleting the object. Fixes issue were we attempt to delete object that doesn't exist.
#rb none

[CL 28185727 by Joakim Lindqvist in ue5-main branch]
2023-09-25 09:18:06 -04:00
Joakim Lindqvist
342f3ee2d3 Unreal Cloud DDC - Added metrics service which will calculate some bucket specific metrics every 24hrs, disabled by default as it puts quite a lot on the db.
Also includes the ability to list buckets and objects in buckets from the ref store, which are not very efficent and mostly meant to be used for background tasks like this.

#rb carl.bystrom

[CL 28082400 by Joakim Lindqvist in ue5-main branch]
2023-09-21 07:50:13 -04:00
Joakim Lindqvist
b7bfb17ec5 Unreal Cloud DDC - Expanded avoid schema changes option to include all schema changes (table modifications was still being made)
[CL 27403299 by Joakim Lindqvist in ue5-main branch]
2023-08-26 16:26:40 -04:00
Joakim Lindqvist
dbcd9406a9 Unreal Cloud DDC - Introduce option to avoid schema changes - making it possible to manage the schema more explicitly.
[CL 27403099 by Joakim Lindqvist in ue5-main branch]
2023-08-26 15:07:02 -04:00
Joakim Lindqvist
c83c4fc3d9 Unreal Cloud DDC - Fixed issue when finalizing refs were we could get a old stale version of a ref when attempting to verify it. This could only happen when you had one version of a ref submitted and then replaced it with a different version - a case we have mostly seen when iterating on oplogs locally.
This fix simply bypasses the caches when attempting to finalize.

[CL 27234350 by Joakim Lindqvist in ue5-main branch]
2023-08-21 04:22:27 -04:00
Joakim Lindqvist
39f06d49e1 Unreal Cloud DDC - Run tests in parallel and remove assumptions on db state so we can avoid clearing it, this mostly involved making sure tests were using unique content and keys for each test case.
This also allows us set the default keyspace from the connection string for connections to scylla and cassandra, if you were not specifying a connection string nothing changes but if you are you will need to also specify the default keyspace.
We also introduce a gc setting to control the default gc policy used if not set in a namespace policy.

[CL 27067566 by Joakim Lindqvist in ue5-main branch]
2023-08-14 09:13:11 -04:00
Ben Marsh
e3c483ec38 UnrealCloudDDC: Rename IObjectService to IRefService.
[CL 26992643 by Ben Marsh in ue5-main branch]
2023-08-10 10:51:41 -04:00
Ben Marsh
1efceda447 UnrealCloudDDC: Fix a few more methods missing 'Async' in the name. Static analyzer not picking up methods in interfaces?
[CL 26990052 by Ben Marsh in ue5-main branch]
2023-08-10 09:29:07 -04:00
Ben Marsh
604190175b UnrealCloudDDC: Rename IoHashKey to RefId.
#fyi Joakim.Lindqvist

[CL 26963145 by Ben Marsh in ue5-main branch]
2023-08-09 13:33:40 -04:00
Ben Marsh
71dc973f40 UnrealCloudDDC: Rename BlobIdentifier to BlobId.
#fyi Joakim.Lindqvist

[CL 26961794 by Ben Marsh in ue5-main branch]
2023-08-09 13:08:12 -04:00
Ben Marsh
a62ecc263e UnrealCloudDDC: Convert spaces to tabs for indentation.
#fyi Joakim.Lindqvist

[CL 26641535 by Ben Marsh in ue5-main branch]
2023-07-27 11:20:47 -04:00
Ben Marsh
cbd08ce1d0 UnrealCloudDDC: Move ObjectHashMismatchException into IObjectService.cs.
[CL 26320127 by Ben Marsh in ue5-main branch]
2023-06-29 13:51:11 -04:00
Joakim Lindqvist
ad7d1f6f1f Unreal Cloud DDC - Fixed failing tests - we can not selectivley create table layouts as we always create the types that bind to them causing Scylla OEM to fail if the tables are missing.
#preflight none

[CL 25678730 by Joakim Lindqvist in ue5-main branch]
2023-05-30 11:39:09 -04:00
Joakim Lindqvist
10d41790f8 Unreal Cloud DDC - Updated migration options to assume migration has happened (so disabled fallback paths)
#preflight none

[CL 25662881 by Joakim Lindqvist in ue5-main branch]
2023-05-29 07:05:32 -04:00
Joakim Lindqvist
bcc6f17239 Unreal Cloud DDC - Fixed issue were we didn't correctly handle a ref that was missing its blob reference (such a ref is invalid as its not pointing to anything)
#preflight none
#rb none

[CL 25617742 by Joakim Lindqvist in ue5-main branch]
2023-05-25 05:32:36 -04:00
Joakim Lindqvist
eb573db4ea Unreal Cloud DDC - Removed usage of Newtonsoft.Json for serilization, previously had some usages of System.Text.Json which we now use everywhere.
This breaks field filtering on json objects because system.text.json does not yet support solving that but .NET 7 adds support for it.

#preflight none

[CL 25143384 by Joakim Lindqvist in ue5-main branch]
2023-04-21 05:50:36 -04:00
Joakim Lindqvist
c1205fc3b2 Unreal Cloud DDC - Fix broken tests when legacy buckets table is missing
#preflight none

[CL 24819246 by Joakim Lindqvist in ue5-main branch]
2023-03-28 11:09:05 -04:00
Joakim Lindqvist
54b1017195 Unreal Cloud DDC - Minor cleanup of using, whitespace
#preflight none

[CL 24479168 by Joakim Lindqvist in ue5-main branch]
2023-03-02 07:21:52 -05:00
Joakim Lindqvist
dbdb0df66f Unreal Cloud DDC - Migrated to new namespace / bucket table layout - we will read both the old and new table by default while we migrate. Also avoiding writing to scylla if bucket has already been added (caching this on write) to reduce unnesscary traffic.
#preflight none

[CL 24314161 by Joakim Lindqvist in ue5-main branch]
2023-02-20 10:20:07 -05:00
Joakim Lindqvist
0acae9deb0 Unreal Cloud DDC - Reworked how the scylla blob index works with the end goal of improving performance on scylla.
There are two parts to this, first we create a blob_index_v2 which does not include references and were we use a clustering key for regions. This allows us to have a much leaner row for this very frequently requested data.
Secondly, and the more impactful, is moving the references into a seperate table were we can use clustering key based on the hash of the refering object which means we no longer need a collection of references which should give much better performance from scylla.
This also includes the foundation for tracking references between blobs but this is not used for the ddc api.
With this we also remove the need for different table layouts between Scylla and base Cassandra.

We will automatically look for old data and migrate it if the setting MigrateFromOldBlobIndex is set (which it is by default).

#preflight none

[CL 24280396 by Joakim Lindqvist in ue5-main branch]
2023-02-17 08:46:16 -05:00
Joakim Lindqvist
04c823f09d Unreal Cloud DDC - Ref GC improvements
Cleaning all namespaces at the same time, reduces load on database.
Move last access tracking in scylla to a seperate table, reduces work on database for compaction due to large inlined blobs.
Also removed the deletion of blobs when GCing ref, as this only runs in a single region so it makes regions very inconsistent in how quickly they delete blobs.
Also added option to control if replication log gets a delete record, and disabled this by default, as this delete record is not used for anything and just adds noise to the replication log.
Added test for scylla shard scanning of ref GC to make sure it isn't broken.

#preflight none

[CL 24119154 by Joakim Lindqvist in ue5-main branch]
2023-02-10 10:20:19 -05:00