diff --git a/src/Umbraco.Core/Cache/CacheKeys.cs b/src/Umbraco.Core/Cache/CacheKeys.cs
index 6ef00c5e85..570c44f75d 100644
--- a/src/Umbraco.Core/Cache/CacheKeys.cs
+++ b/src/Umbraco.Core/Cache/CacheKeys.cs
@@ -6,7 +6,7 @@ namespace Umbraco.Core.Cache
///
public static class CacheKeys
{
- public const string MediaCacheKey = "GetMedia";
+ public const string MediaCacheKey = "UL_GetMedia";
//NOTE: pretty sure this is never used anymore
internal const string MacroRuntimeCacheKey = "UmbracoRuntimeMacroCache";
@@ -16,7 +16,7 @@ namespace Umbraco.Core.Cache
public const string MacroHtmlDateAddedCacheKey = "macroHtml_DateAdded_";
public const string MacroControlDateAddedCacheKey = "macroControl_DateAdded_";
- public const string MemberCacheKey = "GetMember";
+ public const string MemberCacheKey = "UL_GetMember";
public const string TemplateCacheKey = "template";
diff --git a/src/Umbraco.Core/Configuration/UmbracoVersion.cs b/src/Umbraco.Core/Configuration/UmbracoVersion.cs
index 908426637c..583e1097bf 100644
--- a/src/Umbraco.Core/Configuration/UmbracoVersion.cs
+++ b/src/Umbraco.Core/Configuration/UmbracoVersion.cs
@@ -5,7 +5,7 @@ namespace Umbraco.Core.Configuration
{
public class UmbracoVersion
{
- private static readonly Version Version = new Version("6.1.0");
+ private static readonly Version Version = new Version("6.0.3");
///
/// Gets the current version of Umbraco.
diff --git a/src/Umbraco.Core/Sync/DefaultServerMessenger.cs b/src/Umbraco.Core/Sync/DefaultServerMessenger.cs
index 9176a94728..50750dbde0 100644
--- a/src/Umbraco.Core/Sync/DefaultServerMessenger.cs
+++ b/src/Umbraco.Core/Sync/DefaultServerMessenger.cs
@@ -17,9 +17,12 @@ namespace Umbraco.Core.Sync
///
internal class DefaultServerMessenger : IServerMessenger
{
- private readonly string _login;
- private readonly string _password;
- private readonly bool _useDistributedCalls;
+ private readonly Func> _getUserNamePasswordDelegate;
+ private volatile bool _hasResolvedDelegate = false;
+ private readonly object _locker = new object();
+ private string _login;
+ private string _password;
+ private bool _useDistributedCalls;
///
/// Without a username/password all distribuion will be disabled
@@ -36,11 +39,23 @@ namespace Umbraco.Core.Sync
///
internal DefaultServerMessenger(string login, string password)
{
+ if (login == null) throw new ArgumentNullException("login");
+ if (password == null) throw new ArgumentNullException("password");
+
_useDistributedCalls = UmbracoSettings.UseDistributedCalls;
_login = login;
_password = password;
}
+ ///
+ /// Allows to set a lazy delegate to resolve the username/password
+ ///
+ ///
+ public DefaultServerMessenger(Func> getUserNamePasswordDelegate)
+ {
+ _getUserNamePasswordDelegate = getUserNamePasswordDelegate;
+ }
+
public void PerformRefresh(IEnumerable servers, ICacheRefresher refresher,Func getNumericId, params T[] instances)
{
if (servers == null) throw new ArgumentNullException("servers");
@@ -160,6 +175,47 @@ namespace Umbraco.Core.Sync
}
}
+ ///
+ /// If we are instantiated with a lazy delegate to get the username/password, we'll resolve it here
+ ///
+ private void EnsureLazyUsernamePasswordDelegateResolved()
+ {
+ if (!_hasResolvedDelegate && _getUserNamePasswordDelegate != null)
+ {
+ lock (_locker)
+ {
+ if (!_hasResolvedDelegate)
+ {
+ _hasResolvedDelegate = true; //set flag
+
+ try
+ {
+ var result = _getUserNamePasswordDelegate();
+ if (result == null)
+ {
+ _login = null;
+ _password = null;
+ _useDistributedCalls = false;
+ }
+ else
+ {
+ _login = result.Item1;
+ _password = result.Item2;
+ _useDistributedCalls = UmbracoSettings.UseDistributedCalls;
+ }
+ }
+ catch (Exception ex)
+ {
+ LogHelper.Error("Could not resolve username/password delegate, server distribution will be disabled", ex);
+ _login = null;
+ _password = null;
+ _useDistributedCalls = false;
+ }
+ }
+ }
+ }
+ }
+
private void InvokeMethodOnRefresherInstance(ICacheRefresher refresher, MessageType dispatchType, IEnumerable