umbraco / Umbraco-CMS

Umbraco is a free and open source .NET content management system helping you deliver delightful digital experiences.
https://umbraco.com
MIT License
4.36k stars 2.64k forks source link

Remove datatype configuration object and all derived usage #16611

Open kjac opened 1 week ago

kjac commented 1 week ago

⚠️ DO NOT MERGE THIS PR UNTIL @kjac GIVES THE GREEN LIGHT ⚠️

Prerequisites

Description

The data type configuration object (ConfigurationObject) has been the culprit of a fair few performance issues, primarily because we do not have an immutable cache.

With V14, the data type configuration object has also partially lost its value, because it is no longer the whole thruth; the data type configuration is now split between client and server.

This PR removes the ConfigurationObject property from IDataType and all derived usages (e.g. PublishedDataType, ContentPropertyData etc.). This should yield a significant performance improvement because we no longer need to deserialize a whole lot of configuration object all over the codebase.

But it doesn't build?

A lot of unit test mocking is currently broken in this PR. Since this PR is quite breaking, we're not going to spend time fixing the unit tests, until we have established the impact of removing ConfigurationObject.

The core, the website and the integration tests do work, which is sufficient for now.

As it happens, the current IDataTypeConfigurationCache implementation has a bug, which only shows itself in this PR... so there are a few failing integration tests - but that's on purpose :)

Loads of TODOs here?

Yep. This is definitively a work in progress. I have tagged all things I need to get around to with TODO KJA 😄