Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merge in v8/contrib to V8/feature/nucache perf sync #10151

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
113 commits
Select commit Hold shift + click to select a range
c69a89b
Merge branch 'v8/dev' into v8/feature/10613-distributed-locks
nikolajlauridsen Mar 11, 2021
21bee00
Bump version to 8.6.8
nul800sebastiaan Mar 11, 2021
1c5d95d
Merge branch 'v8/8.6' into v8/8.7 and bump version to 8.7.3
nul800sebastiaan Mar 11, 2021
0479ee4
Merge branch 'v8/8.7' into v8/8.8 and bump version to 8.8.4
nul800sebastiaan Mar 11, 2021
e75895c
Merge branch 'v8/8.8' into v8/8.9 and bump version to 8.9.3
nul800sebastiaan Mar 11, 2021
3a5327a
Merge branch 'v8/8.9' into v8/8.10 and bump version to 8.10.3
nul800sebastiaan Mar 11, 2021
e5aaa20
Merge branch 'v8/8.10' into v8/8.11 and bump version to 8.11.2
nul800sebastiaan Mar 11, 2021
e0604e0
Merge branch 'v8/8.11' into v8/8.12 and bump version to 8.12.1
nul800sebastiaan Mar 11, 2021
498a5e0
Initial rework of Lock dictionaries
nikolajlauridsen Mar 11, 2021
85e6a11
[Issue 5277-146] accessibility - Close 'X' icon next to language drop…
justinsane98 Mar 12, 2021
da5351d
Fix issue with SqlMainDomLock that cannot use implicit lock timeouts …
bergmania Mar 12, 2021
83719f3
Fix issue with SqlMainDomLock that cannot use implicit lock timeouts …
bergmania Mar 12, 2021
ef60a98
Merge branch 'v8/8.12' into v8/dev
nul800sebastiaan Mar 12, 2021
9b39bfb
Merge branch 'v8/dev' into v8/contrib
nul800sebastiaan Mar 12, 2021
5c7e4f8
Adjust unit tests and apply fixes to scope
nikolajlauridsen Mar 12, 2021
ea816e8
Add more unit tests, showing current issue
nikolajlauridsen Mar 12, 2021
5ee0f31
Counting Umbraco.ModelsBuilder and ModelsBuilder.Umbraco namespaces a…
callumbwhyte Oct 16, 2020
b7c1ad2
Fix dead lock with TypeLoader
Shazwazza Mar 10, 2021
cee33e8
Fix errors shown in unit tests
nikolajlauridsen Mar 15, 2021
ef59829
Throw error if all scopes hasn't been disposed
nikolajlauridsen Mar 15, 2021
92fd9ff
Clean
nikolajlauridsen Mar 15, 2021
d0f047e
Fixes and Updates for DB Scope and Ambient Context leaks (#9953)
Shazwazza Mar 15, 2021
d1afb6e
Merge remote-tracking branch 'origin/v8/dev' into v8/feature/10613-di…
nikolajlauridsen Mar 15, 2021
653bf52
Adds additional error checking and reporting to MainDom/SqlMainDomLoc…
Shazwazza Mar 15, 2021
f7c032a
Add copy logic to Media Picker (#9957)
patrickdemooij9 Mar 15, 2021
68c4ce2
Wrap calls to map in scopes
nikolajlauridsen Mar 16, 2021
637e85e
Autocomplete scopes
nikolajlauridsen Mar 16, 2021
1570d49
Remove unnecessary aria-hidden attribute from <umb-icon>
bjarnef Mar 16, 2021
aa6d046
Remove scope from method that calls another method that has a scope
nikolajlauridsen Mar 17, 2021
cf4c163
Fixes #9993 - Cannot save empty image in Grid
nul800sebastiaan Mar 17, 2021
3b83b74
Clean
nikolajlauridsen Mar 17, 2021
156c1c9
Revert "The Value() method for IPublishedContent was not working with…
mikecp Mar 17, 2021
54a4a76
Use a hashset to keep track of acquired locks
nikolajlauridsen Mar 17, 2021
e201977
Add images in grid - fixes 9982 (#9987)
nathanwoulfe Mar 17, 2021
9bd1b06
Only create the dicts and hashset when a lock is requested
nikolajlauridsen Mar 17, 2021
c504e3a
Clean
nikolajlauridsen Mar 17, 2021
ab16a40
Adds a config for configuring the access rules on the content dashboa…
elit0451 Mar 17, 2021
3393ac8
Adds additional params indicating whether user is admin
elit0451 Mar 17, 2021
e7a1db5
Add images in grid - fixes 9982 (#9987)
nathanwoulfe Mar 17, 2021
548435d
Bump version to 8.12.2
nul800sebastiaan Mar 17, 2021
3004e00
#9964 Removed unneeded check for HttpContext
markusobviuse Mar 15, 2021
2b9eaee
Fix for #9950 - HttpsCheck will now retry using the login background …
Jeavon Mar 9, 2021
0ecc933
Merge pull request #9994 from umbraco/v8/bugfix/9993
bergmania Mar 18, 2021
e17bf38
Merge pull request #9994 from umbraco/v8/bugfix/9993
bergmania Mar 18, 2021
8f50bdb
Apply suggestions from review
nikolajlauridsen Mar 18, 2021
45de0a1
Fixes #9983 - Getting kicked, if document type has a Umbraco.UserPick…
nul800sebastiaan Mar 18, 2021
73439d4
Fixes #9983 - Getting kicked, if document type has a Umbraco.UserPick…
nul800sebastiaan Mar 18, 2021
7f1d5fe
8539: Allow alias in image cropper (#9266)
benjaminc Mar 18, 2021
95f4248
Wrap dumping dictionaries in a method.
nikolajlauridsen Mar 19, 2021
507c821
Create method for generating log message
nikolajlauridsen Mar 19, 2021
3c9fb71
Merge pull request #9979 from umbraco/v8/feature/10613-distributed-locks
bergmania Mar 19, 2021
691c5d3
Fix swedish translation for somethingElse.
jesperlofgrensappa Mar 19, 2021
046d635
Copy member type (#10020)
bjarnef Mar 21, 2021
fe8cd23
Null check on scope and options to ensure backward compatibility
bjarnef Mar 19, 2021
f8f2029
Improve performance, readability and handling of FollowInternalRedire…
Shazwazza Mar 22, 2021
3d05bd6
Update casing of listview layout name
bjarnef Mar 22, 2021
88611f3
9097 add contextual password helper (#9256)
mikecp Mar 22, 2021
95bf10e
Unbind listener
nathanwoulfe Mar 19, 2021
ebd504e
Replace icon in date picker with umb-icon component (#10040)
bjarnef Mar 23, 2021
14c2bb4
Update cypress and fix tests
nikolajlauridsen Mar 23, 2021
11f123e
Listview config icons (#10036)
bjarnef Mar 23, 2021
9ac4eac
Anchor noopener (#10009)
Mar 24, 2021
f0b39ce
Align 'Add language' test to netcore
nikolajlauridsen Mar 24, 2021
b723b4d
Merge pull request #10045 from umbraco/v8/feature/update-cypress-and-…
bergmania Mar 24, 2021
70a582d
Add new cypress tests
nikolajlauridsen Mar 24, 2021
64724ac
Add indentation
nikolajlauridsen Mar 24, 2021
eabfa7f
Getting rid of the config file and implementing an appSetting instead
elit0451 Mar 24, 2021
6e54c6f
Implementation for IContentDashboardSettings
elit0451 Mar 24, 2021
61f486e
Cleanup
elit0451 Mar 24, 2021
91ce071
Merge remote-tracking branch 'origin/v8/dev' into v8/feature/AB10891-…
elit0451 Mar 24, 2021
bfc3068
Merge pull request #10056 from umbraco/v8/feature/new-cypress-content…
bergmania Mar 24, 2021
56d5704
bool.Try
elit0451 Mar 24, 2021
f68d4d6
Taking AllowContentDashboardAccessToAllUsers prop from GlobalSettings…
elit0451 Mar 25, 2021
499e4f0
Merge pull request #9999 from umbraco/v8/feature/AB10891-content-dash…
nikolajlauridsen Mar 25, 2021
121ae2e
Handling multiple values per field in Examine Management
callumbwhyte Feb 22, 2021
dcc07fd
Add Root<T> and Breadcrumbs extension methods for IPublishedContent (…
Mar 28, 2021
6299ea0
Orders member type grouping of members alphabetically, matching the l…
AndyButland Mar 25, 2021
958e25d
Revert updating deprecated WriterName/CreatorName refs
nathanwoulfe Mar 30, 2021
e7ce6a3
Handle Invalid format for Upgrade check
BeardInASuit Mar 30, 2021
c881fa9
Fixes tabbing-mode remains active after closing modal #9790 (#10074)
madsrasmussen Mar 30, 2021
d08b84d
Allow to pass in boolean to preventEnterSubmit directive (#8639)
bjarnef Mar 31, 2021
15923aa
Fixes tabbing-mode remains active after closing modal #9790 (#10074)
madsrasmussen Mar 30, 2021
acaf194
Merge branch 'v8/8.11' into v8/8.12
nul800sebastiaan Mar 31, 2021
2f60a47
Merge branch 'v8/8.12' into v8/dev
nul800sebastiaan Mar 31, 2021
e8a9c4d
Merge branch 'v8/dev' into v8/contrib
nul800sebastiaan Mar 31, 2021
72e4684
Null check on scope and options to ensure backward compatibility
bjarnef Mar 19, 2021
d7519e2
Merge branch 'v8/8.12' into v8/dev
nul800sebastiaan Mar 31, 2021
d428a45
Merge branch 'v8/dev' into v8/contrib
nul800sebastiaan Mar 31, 2021
f83f465
Fix validation of step size in integer/numeric field
bjarnef Mar 22, 2021
f8e280e
9962: Use $allowedEditors instead of allowed (#10086)
patrickdemooij9 Apr 4, 2021
f549a36
fixes #10021 adds ng-form and val-form-manager to the documentation
madsrasmussen Mar 30, 2021
739d9a8
Improved accessibility of link picker (#10099)
RachBreeze Apr 6, 2021
db6d572
Accessibility: Alerts the user how many results have been returned on…
RachBreeze Apr 6, 2021
fc77252
Updated LightInject to v6.4.0
Mar 1, 2021
c84f616
Remove HtmlSanitizer once more - see #9803
nul800sebastiaan Mar 17, 2021
3358ab2
Also make sure NuGet installs the correct version of the CodePages de…
nul800sebastiaan Mar 17, 2021
89b881e
Bump version to 8.13 RC
nul800sebastiaan Apr 6, 2021
26d11a8
Fixed copy preserving sort order (#10091)
ricbrady Apr 6, 2021
d85d0d7
Revert "Updated LightInject to v6.4.0"
nul800sebastiaan Apr 6, 2021
2d2a89f
Revert "Add copy logic to Media Picker (#9957)"
nul800sebastiaan Apr 7, 2021
9d5a5d8
Merge branch 'v8/dev' into v8/contrib
nul800sebastiaan Apr 7, 2021
8b6fc76
Reintroduce old constructor to make non-breaking
nikolajlauridsen Apr 7, 2021
f6eb8c9
Merge pull request #9995 from umbraco/v8/feature/10615-mappers-with-e…
nikolajlauridsen Apr 7, 2021
9fdbbb5
Update cypress test to make macros in the grid work again
nul800sebastiaan Apr 7, 2021
ecf6766
Attributes could be multiple items, test specifically if `Directory` …
nul800sebastiaan Apr 7, 2021
8c20e25
Merge branch 'v8/8.13' into v8/dev
nul800sebastiaan Apr 7, 2021
b0592f1
Merge branch 'v8/dev' into v8/contrib
nul800sebastiaan Apr 7, 2021
e21cc6f
Accessibility: Adding label fors and control ids for the macro picker…
RachBreeze Apr 10, 2021
3b6de9c
Updating typo
crgrieve Apr 9, 2021
4f49e57
Removed top-margin from switcher icon
madsoulswe Apr 11, 2021
c8b6841
Allow KeepAlive controller Ping method to be requested by non local r…
Jeavon Apr 13, 2021
370d652
merge
nzdev Apr 19, 2021
a665b66
fix csproj
nzdev Apr 20, 2021
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion build/NuSpecs/UmbracoCms.Web.nuspec
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@
<dependency id="Microsoft.Owin.Security.Cookies" version="[4.0.1,4.999999)" />
<dependency id="Microsoft.Owin.Security.OAuth" version="[4.0.1,4.999999)" />
<dependency id="System.Threading.Tasks.Dataflow" version="[4.9.0,4.999999)" />
<dependency id="HtmlSanitizer" version="[5.0.376,5.999999)" />
<dependency id="System.Text.Encoding.CodePages" version="[4.7.1,4.999999)" />
<dependency id="MessagePack" version="[2.1.165,2.999999)" />

</group>
Expand Down
4 changes: 2 additions & 2 deletions src/SolutionInfo.cs
Original file line number Diff line number Diff line change
Expand Up @@ -18,5 +18,5 @@
[assembly: AssemblyVersion("8.0.0")]

// these are FYI and changed automatically
[assembly: AssemblyFileVersion("8.12.0")]
[assembly: AssemblyInformationalVersion("8.12.0")]
[assembly: AssemblyFileVersion("8.13.0")]
[assembly: AssemblyInformationalVersion("8.13.0-rc")]
115 changes: 81 additions & 34 deletions src/Umbraco.Core/Composing/TypeLoader.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
using System;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
Expand Down Expand Up @@ -45,7 +45,7 @@ public class TypeLoader
private IEnumerable<Assembly> _assemblies;
private bool _reportedChange;
private readonly string _localTempPath;
private string _fileBasePath;
private readonly Lazy<string> _fileBasePath;

/// <summary>
/// Initializes a new instance of the <see cref="TypeLoader"/> class.
Expand All @@ -70,6 +70,8 @@ internal TypeLoader(IAppPolicyCache runtimeCache, string localTempPath, IProfili
_localTempPath = localTempPath;
_logger = logger ?? throw new ArgumentNullException(nameof(logger));

_fileBasePath = new Lazy<string>(GetFileBasePath);

if (detectChanges)
{
//first check if the cached hash is string.Empty, if it is then we need
Expand Down Expand Up @@ -160,7 +162,8 @@ internal string CachedAssembliesHash
return _cachedAssembliesHash;

var typesHashFilePath = GetTypesHashFilePath();
if (!File.Exists(typesHashFilePath)) return string.Empty;
if (!File.Exists(typesHashFilePath))
return string.Empty;

var hash = File.ReadAllText(typesHashFilePath, Encoding.UTF8);

Expand Down Expand Up @@ -339,19 +342,31 @@ internal Attempt<IEnumerable<string>> TryGetCached(Type baseType, Type attribute

var typesListFilePath = GetTypesListFilePath();
if (File.Exists(typesListFilePath) == false)
{
return cache;
}

using (var stream = GetFileStream(typesListFilePath, FileMode.Open, FileAccess.Read, FileShare.Read, ListFileOpenReadTimeout))
using (var reader = new StreamReader(stream))
{
while (true)
{
var baseType = reader.ReadLine();
if (baseType == null) return cache; // exit
if (baseType.StartsWith("<")) break; // old xml
if (baseType == null)
{
return cache; // exit
}

if (baseType.StartsWith("<"))
{
break; // old xml
}

var attributeType = reader.ReadLine();
if (attributeType == null) break;
if (attributeType == null)
{
break;
}

var types = new List<string>();
while (true)
Expand All @@ -370,7 +385,10 @@ internal Attempt<IEnumerable<string>> TryGetCached(Type baseType, Type attribute
types.Add(type);
}

if (types == null) break;
if (types == null)
{
break;
}
}
}

Expand All @@ -379,28 +397,31 @@ internal Attempt<IEnumerable<string>> TryGetCached(Type baseType, Type attribute
}

// internal for tests
internal string GetTypesListFilePath() => GetFileBasePath() + ".list";
internal string GetTypesListFilePath() => _fileBasePath.Value + ".list";

private string GetTypesHashFilePath() => GetFileBasePath() + ".hash";
private string GetTypesHashFilePath() => _fileBasePath.Value + ".hash";

/// <summary>
/// Used to produce the Lazy value of _fileBasePath
/// </summary>
/// <returns></returns>
private string GetFileBasePath()
{
lock (_locko)
{
if (_fileBasePath != null)
return _fileBasePath;

_fileBasePath = Path.Combine(_localTempPath, "TypesCache", "umbraco-types." + NetworkHelper.FileSafeMachineName);
var fileBasePath = Path.Combine(_localTempPath, "TypesCache", "umbraco-types." + NetworkHelper.FileSafeMachineName);

// ensure that the folder exists
var directory = Path.GetDirectoryName(_fileBasePath);
if (directory == null)
throw new InvalidOperationException($"Could not determine folder for path \"{_fileBasePath}\".");
if (Directory.Exists(directory) == false)
Directory.CreateDirectory(directory);
// ensure that the folder exists
var directory = Path.GetDirectoryName(fileBasePath);
if (directory == null)
{
throw new InvalidOperationException($"Could not determine folder for path \"{fileBasePath}\".");
}

return _fileBasePath;
if (Directory.Exists(directory) == false)
{
Directory.CreateDirectory(directory);
}

return fileBasePath;
}

// internal for tests
Expand All @@ -416,7 +437,10 @@ internal void WriteCache()
writer.WriteLine(typeList.BaseType == null ? string.Empty : typeList.BaseType.FullName);
writer.WriteLine(typeList.AttributeType == null ? string.Empty : typeList.AttributeType.FullName);
foreach (var type in typeList.Types)
{
writer.WriteLine(type.AssemblyQualifiedName);
}

writer.WriteLine();
}
}
Expand All @@ -434,16 +458,22 @@ void TimerRelease(object o)
WriteCache();
}
catch { /* bah - just don't die */ }
if (!_timing) _timer = null;
if (!_timing)
_timer = null;
}
}

lock (_timerLock)
{
if (_timer == null)
{
_timer = new Timer(TimerRelease, null, ListFileWriteThrottle, Timeout.Infinite);
}
else
{
_timer.Change(ListFileWriteThrottle, Timeout.Infinite);
}

_timing = true;
}
}
Expand Down Expand Up @@ -476,7 +506,9 @@ private Stream GetFileStream(string path, FileMode fileMode, FileAccess fileAcce
catch
{
if (--attempts == 0)
{
throw;
}

_logger.Debug<TypeLoader,string,int,int>("Attempted to get filestream for file {Path} failed, {NumberOfAttempts} attempts left, pausing for {PauseMilliseconds} milliseconds", path, attempts, pauseMilliseconds);
Thread.Sleep(pauseMilliseconds);
Expand Down Expand Up @@ -543,7 +575,8 @@ public IEnumerable<Attribute> GetAssemblyAttributes()
/// <exception cref="ArgumentNullException">attributeTypes</exception>
public IEnumerable<Attribute> GetAssemblyAttributes(params Type[] attributeTypes)
{
if (attributeTypes == null) throw new ArgumentNullException(nameof(attributeTypes));
if (attributeTypes == null)
throw new ArgumentNullException(nameof(attributeTypes));

return AssembliesToScan.SelectMany(a => attributeTypes.SelectMany(at => a.GetCustomAttributes(at))).ToList();
}
Expand All @@ -563,7 +596,9 @@ public IEnumerable<Attribute> GetAssemblyAttributes(params Type[] attributeTypes
public IEnumerable<Type> GetTypes<T>(bool cache = true, IEnumerable<Assembly> specificAssemblies = null)
{
if (_logger == null)
{
throw new InvalidOperationException("Cannot get types from a test/blank type loader.");
}

// do not cache anything from specific assemblies
cache &= specificAssemblies == null;
Expand All @@ -583,7 +618,7 @@ public IEnumerable<Type> GetTypes<T>(bool cache = true, IEnumerable<Assembly> sp

// get IDiscoverable and always cache
var discovered = GetTypesInternal(
typeof (IDiscoverable), null,
typeof(IDiscoverable), null,
() => TypeFinder.FindClassesOfType<IDiscoverable>(AssembliesToScan),
"scanning assemblies",
true);
Expand All @@ -594,9 +629,9 @@ public IEnumerable<Type> GetTypes<T>(bool cache = true, IEnumerable<Assembly> sp

// filter the cached discovered types (and maybe cache the result)
return GetTypesInternal(
typeof (T), null,
typeof(T), null,
() => discovered
.Where(x => typeof (T).IsAssignableFrom(x)),
.Where(x => typeof(T).IsAssignableFrom(x)),
"filtering IDiscoverable",
cache);
}
Expand All @@ -614,7 +649,9 @@ public IEnumerable<Type> GetTypes<T>(bool cache = true, IEnumerable<Assembly> sp
where TAttribute : Attribute
{
if (_logger == null)
{
throw new InvalidOperationException("Cannot get types from a test/blank type loader.");
}

// do not cache anything from specific assemblies
cache &= specificAssemblies == null;
Expand All @@ -633,7 +670,7 @@ public IEnumerable<Type> GetTypes<T>(bool cache = true, IEnumerable<Assembly> sp

// get IDiscoverable and always cache
var discovered = GetTypesInternal(
typeof (IDiscoverable), null,
typeof(IDiscoverable), null,
() => TypeFinder.FindClassesOfType<IDiscoverable>(AssembliesToScan),
"scanning assemblies",
true);
Expand All @@ -644,7 +681,7 @@ public IEnumerable<Type> GetTypes<T>(bool cache = true, IEnumerable<Assembly> sp

// filter the cached discovered types (and maybe cache the result)
return GetTypesInternal(
typeof (T), typeof (TAttribute),
typeof(T), typeof(TAttribute),
() => discovered
.Where(x => typeof(T).IsAssignableFrom(x))
.Where(x => x.GetCustomAttributes<TAttribute>(false).Any()),
Expand All @@ -664,7 +701,9 @@ public IEnumerable<Type> GetAttributedTypes<TAttribute>(bool cache = true, IEnum
where TAttribute : Attribute
{
if (_logger == null)
{
throw new InvalidOperationException("Cannot get types from a test/blank type loader.");
}

// do not cache anything from specific assemblies
cache &= specificAssemblies == null;
Expand All @@ -673,7 +712,7 @@ public IEnumerable<Type> GetAttributedTypes<TAttribute>(bool cache = true, IEnum
_logger.Debug<TypeLoader, string>("Running a full, non-cached, scan for types / attribute {AttributeName} (slow).", typeof(TAttribute).FullName);

return GetTypesInternal(
typeof (object), typeof (TAttribute),
typeof(object), typeof(TAttribute),
() => TypeFinder.FindClassesWithAttribute<TAttribute>(specificAssemblies ?? AssembliesToScan),
"scanning assemblies",
cache);
Expand All @@ -693,12 +732,14 @@ public IEnumerable<Type> GetAttributedTypes<TAttribute>(bool cache = true, IEnum
var name = GetName(baseType, attributeType);

lock (_locko)
using (_logger.DebugDuration<TypeLoader>(
{
using (_logger.DebugDuration<TypeLoader>(
"Getting " + name,
"Got " + name)) // cannot contain typesFound.Count as it's evaluated before the find
{
// get within a lock & timer
return GetTypesInternalLocked(baseType, attributeType, finder, action, cache);
{
// get within a lock & timer
return GetTypesInternalLocked(baseType, attributeType, finder, action, cache);
}
}
}

Expand All @@ -720,7 +761,9 @@ private static string GetName(Type baseType, Type attributeType)
var listKey = new CompositeTypeTypeKey(baseType ?? tobject, attributeType ?? tobject);
TypeList typeList = null;
if (cache)
{
_types.TryGetValue(listKey, out typeList); // else null
}

// if caching and found, return
if (typeList != null)
Expand Down Expand Up @@ -795,7 +838,9 @@ private static string GetName(Type baseType, Type attributeType)
_logger.Debug<TypeLoader, string>("Getting {TypeName}: " + action + ".", GetName(baseType, attributeType));

foreach (var t in finder())
{
typeList.Add(t);
}
}

// if we are to cache the results, do so
Expand All @@ -807,7 +852,9 @@ private static string GetName(Type baseType, Type attributeType)
_types[listKey] = typeList;
//if we are scanning then update the cache file
if (scan)
{
UpdateCache();
}
}

_logger.Debug<TypeLoader, string, string>("Got {TypeName}, caching ({CacheType}).", GetName(baseType, attributeType), added.ToString().ToLowerInvariant());
Expand Down
4 changes: 3 additions & 1 deletion src/Umbraco.Core/ConfigsExtensions.cs
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
using System.IO;
using Umbraco.Core.Cache;
using Umbraco.Core.Composing;
using Umbraco.Core.Configuration;
using Umbraco.Core.Configuration.Grid;
using Umbraco.Core.Configuration.HealthChecks;
using Umbraco.Core.Configuration.UmbracoSettings;
using Umbraco.Core.Dashboards;
using Umbraco.Core.IO;
using Umbraco.Core.Logging;
using Umbraco.Core.Manifest;
Expand Down Expand Up @@ -48,6 +48,8 @@ public static void AddCoreConfigs(this Configs configs)
configDir,
factory.GetInstance<ManifestParser>(),
factory.GetInstance<IRuntimeState>().Debug));

configs.Add<IContentDashboardSettings>(() => new ContentDashboardSettings());
}
}
}
Loading