Copied to clipboard

Flag this post as spam?

This post will be reported to the moderators as potential spam to be looked at


  • Darren Ferguson 1019 posts 3255 karma points MVP c-trib
    Aug 22, 2014 @ 12:41
    Darren Ferguson
    0

    Setting up distributedcall for Umbraco load balancing with Umbraco 7

    Hello All,

    We can't seem to get distributedcalls for load balancing working with v7. Has anyone got this setup and working?

    We also notice the exception at the bottom of this post occuring in our logs every few minutes.

    Has the mechanism been changed for v7. Is there any additional config required that is different from v6?

    Our config looks like this:

    <distributedCall enable="true">
        <user>0</user>
        <servers>
          <server>10.4.3.5</server>
          <server>10.4.3.6</server>
        </servers>
      </distributedCall>

    We have verified that the two servers can communicate by logging into them using the ips above while on an RDP session to the server.

    2014-08-22 10:35:37,020 [7] ERROR Umbraco.Web.Scheduling.ScheduledPublishing - [Thread 10] An error occurred with the scheduled publishing
    System.Net.WebException: The remote server returned an error: (404) Not Found.
       at System.Net.WebClient.UploadDataInternal(Uri address, String method, Byte[] data, WebRequest& request)
       at System.Net.WebClient.UploadString(Uri address, String method, String data)
       at Umbraco.Web.Scheduling.ScheduledPublishing.Start(ApplicationContext appContext)
    2014-08-22 10:36:01,876 [7] ERROR Umbraco.Web.Mvc.AdminTokenAuthorizeAttribute - [Thread 28] Failed to format passed in token value
    System.Security.Cryptography.CryptographicException: Error occurred during a cryptographic operation.
       at System.Web.Security.Cryptography.HomogenizingCryptoServiceWrapper.HomogenizeErrors(Func`2 func, Byte[] input)
       at System.Web.Security.FormsAuthentication.Decrypt(String encryptedTicket)
       at Umbraco.Core.StringExtensions.DecryptWithMachineKey(String value)
       at Umbraco.Web.Mvc.AdminTokenAuthorizeAttribute.AuthorizeCore(HttpContextBase httpContext)
  • Sebastiaan Janssen 4847 posts 14373 karma points MVP admin hq
    Aug 22, 2014 @ 13:04
    Sebastiaan Janssen
    0

    This is 7.1.5, correct? Have you tried with 7.1.4 before?

    For that last error: Does your admin user (id: 0) have a blank value in either the email address, the username or the password by any chance?

  • Darren Ferguson 1019 posts 3255 karma points MVP c-trib
    Aug 22, 2014 @ 15:13
    Darren Ferguson
    0

    Hi Mate - this is 7.1.5 and was a clean install yesterday.

    All of those values are set on the user BTW!

  • Darren Ferguson 1019 posts 3255 karma points MVP c-trib
    Aug 22, 2014 @ 15:13
    Darren Ferguson
    0

    And sorry no - have not tried 7.1.4 before, can do if needed.

  • Sebastiaan Janssen 4847 posts 14373 karma points MVP admin hq
    Aug 22, 2014 @ 15:18
    Sebastiaan Janssen
    0

    Alright, not sure about the distributed calls thing, but I've pinged Shannon about this topic.

    The docs here apply to v7 by the way, not sure if this would've changed between 7.1.4 and 7.1.5, though this might be something:
    http://issues.umbraco.org/issue/U4-581
    Seems like the docs have been updated:
    https://github.com/umbraco/Umbraco4Docs/commit/40e839f74d20254de0e6c654d60cfd23782bdf2e

    With regards to the 404, you testing this on azure websites by any chance? http://issues.umbraco.org/issue/U4-5379

  • Darren Ferguson 1019 posts 3255 karma points MVP c-trib
    Aug 23, 2014 @ 15:15
    Darren Ferguson
    0

    Thanks for looking into this for me - FYI the exception dissapears from the logs when I add the new serverName attribute described in the docs. Sorry - I've done this so many times of course I didn't RTFM before doing this!

    However the cache isn't updated to the second server.

    This is an Azure VMS deployment BTW.

    Upon publish I have the following mysterioys message in my logs:

    2014-08-23 13:09:40,455 [7] DEBUG Umbraco.Web.BatchedServerMessenger - [Thread 12] Distributed server push completed with no nodes reporting an error

     Over on the target - no error:

    2014-08-23 13:09:00,026 [7] DEBUG Umbraco.Web.UmbracoModule - [Thread 10] Begin request: http://mhost-web2.mhost.local/umbraco/Webservices/CacheRefresher.asmx.
    2014-08-23 13:09:06,617 [7] DEBUG Umbraco.Web.UmbracoModule - [Thread 12] Begin request: http://mhost-web2.mhost.local/umbraco/Webservices/CacheRefresher.asmx?op=RefreshById.
    2014-08-23 13:09:40,224 [7] DEBUG Umbraco.Web.UmbracoModule - [Thread 10] Begin request: http://mhost-web2.mhost.local/umbraco/webservices/cacheRefresher.asmx.
    2014-08-23 13:09:44,953 [7] DEBUG Umbraco.Web.Scheduling.Scheduler - [Thread 10] Scheduling interval executing
    2014-08-23 13:09:44,953 [7] DEBUG Umbraco.Web.Scheduling.Scheduler - [Thread 10] Current server (MHOST-WEB2) detected as a slave, no scheduled processes will execute on this server
    2014-08-23 13:09:44,953 [7] DEBUG Umbraco.Web.Scheduling.Scheduler - [Thread 10] Scheduling interval complete (took 0ms)

    I've RDP'ed onto the first server and hit:

    /umbraco/Webservices/CacheRefresher.asmx?op=RefreshById

    On the second with no issues.

    I'm a bit short on time at the mo - but I guess that I need to dig into the code behind CacheRefresher.asmx and possibly add some more logging.

    It seems that the request is received by the slave but not processed.

     

  • Shannon Deminick 1486 posts 4986 karma points hq
    Aug 25, 2014 @ 05:25
    Shannon Deminick
    0

    Hi Darren,

    I'm testing this locally and unfortunately am having a tough time reproducing.

    The serverName attribute is optional - but should be set so that scheduled publishing works properly, if you don't set the attribute then all servers will attempt to perform the scheduled publishing which is not ideal. Also if the serverName or appId attributes are not set then the URL that will be created to perform the scheduled publishing will be determined by:

     return string.Format("http://{0}", ApplicationContext.Current.OriginalRequestUrl);
    

    This is how the code was in previous versions for scheduled tasks, but now we can do this in a better way with the serverName or appId attributes to build the correct URL for the server. The code for this is here:

    https://github.com/umbraco/Umbraco-CMS/blob/7.2.0/src/Umbraco.Core/Sync/ServerEnvironmentHelper.cs

    So the 404 you were getting was related to this.

    We've change how distributed calls are done, so they are done in batches instead of sending individual requests to all servers for each action (which based on some things can cause quite a lot of requests to be sent, especially when working with permissions). See task: http://issues.umbraco.org/issue/U4-2633

    So if you are debugging, this is the method that will get called for distributed calls: umbraco.presentation.webservices.CacheRefresher.BulkRefresh, code is here: https://github.com/umbraco/Umbraco-CMS/blob/7.2.0/src/Umbraco.Web/umbraco.presentation/umbraco/webservices/CacheRefresher.asmx.cs#L27

    There are two bits of code that might be the issue. Since you know your slave server's CacheRefresher.asmx is being hit, I wonder if any of this logic is matching and thus exiting?

            if (BusinessLogic.User.validateCredentials(login, password) == false)
            {
                return;
            }
    
            //check if this is the same app id as the one passed in, if it is, then we will ignore
            // the request - we will have to assume that the cache refeshing has already been applied to the server
            // that executed the request.
            if (SystemUtilities.GetCurrentTrustLevel() == AspNetHostingPermissionLevel.Unrestricted)
            {
                //we can only check this in full trust. if it's in medium trust we'll just end up with 
                // the server refreshing it's cache twice.
                if (HttpRuntime.AppDomainAppId == appId)
                {
                    return;
                }
            }
    

    It would be pretty strange if that was the case though unless you VMs are exact clones of each other and same with your IIS which would mean that you might have the same AppDomainAppId for your IIS sites on each server.

  • Genoher 3 posts 53 karma points
    Aug 28, 2014 @ 13:20
    Genoher
    0

    Hello Everybody,

    I updated from umbraco 7.0.3 to 7.1.6, and the distributed calls doesn't works. The envirodment use certificated SSL.

    Servers:

    One for backoffice (Umbraco03 - 172.16.101.13), and two balanced frontends (Umbraco01 - 172.16.101.11, Umbraco02 - 172.16.101.12).

    When I make a change in a content or create some new content, this is not reflected in the frontends, meanwhile in backoffice it happens.

    Configuration:

      <distributedCall enable="true">
        <user>0</user>
        <servers>
          <server serverName="Umbraco03" forceProtocol="https">umbraco03.expohotels.com</server>
          <server serverName="Umbraco02" forceProtocol="https">umbraco02.expohotels.com</server>
          <server serverName="Umbraco01" forceProtocol="https">umbraco01.expohotels.com</server>
        </servers>
      </distributedCall>
    

    Errors in logs:

    Umbraco03:

    2014-08-28 13:07:10,525 [17] DEBUG Umbraco.Web.UmbracoModule - [Thread 11] Begin request: https://adminpre.expohotels.com/umbraco/backoffice/UmbracoApi/Content/PostSave.
    2014-08-28 13:07:10,525 [17] DEBUG umbraco.content - [Thread 11] Content initialized (was already in context)
    2014-08-28 13:07:10,681 [17] INFO  Umbraco.Core.Publishing.PublishingStrategy - [Thread 11] Content 'Test' with Id '3357' has been published.
    2014-08-28 13:07:10,744 [17] DEBUG Umbraco.Core.Sync.DefaultServerMessenger - [Thread 11] Performing distributed call for refresher Umbraco.Web.Cache.UnpublishedPageCacheRefresher, message type: RefreshById, servers: https://umbraco03.expohotels.com/umbraco/webservices/cacheRefresher.asmx;https://umbraco02.expohotels.com/umbraco/webservices/cacheRefresher.asmx;https://umbraco01.expohotels.com/umbraco/webservices/cacheRefresher.asmx, ids: 3357, json: 
    2014-08-28 13:07:10,744 [17] DEBUG Umbraco.Core.Sync.DefaultServerMessenger - [Thread 11] Invoking refresher Umbraco.Web.Cache.UnpublishedPageCacheRefresher on single server instance, message type RefreshById
    2014-08-28 13:07:10,806 [17] DEBUG UmbracoExamine.DataServices.UmbracoLogService - [Thread 11] ReIndexNode with type: content, Provider=InternalIndexer, NodeId=3357
    2014-08-28 13:07:10,806 [17] DEBUG UmbracoExamine.DataServices.UmbracoLogService - [Thread 11] AddSingleNodeToIndex with type: content, Provider=InternalIndexer, NodeId=3357
    2014-08-28 13:07:10,822 [17] DEBUG UmbracoExamine.DataServices.UmbracoLogService - [Thread 12] Index created for node, Provider=InternalIndexer, NodeId=3357
    2014-08-28 13:07:10,853 [17] DEBUG Umbraco.Core.Sync.DefaultServerMessenger - [Thread 11] Performing distributed call for refresher Umbraco.Web.Cache.PageCacheRefresher, message type: RefreshById, servers: https://umbraco03.expohotels.com/umbraco/webservices/cacheRefresher.asmx;https://umbraco02.expohotels.com/umbraco/webservices/cacheRefresher.asmx;https://umbraco01.expohotels.com/umbraco/webservices/cacheRefresher.asmx, ids: 3357, json: 
    2014-08-28 13:07:10,853 [17] DEBUG Umbraco.Core.Sync.DefaultServerMessenger - [Thread 11] Invoking refresher Umbraco.Web.Cache.PageCacheRefresher on single server instance, message type RefreshById
    2014-08-28 13:07:10,868 [17] DEBUG umbraco.content - [Thread 11] Content initialized (was already in context)
    2014-08-28 13:07:10,884 [17] DEBUG Umbraco.Core.Sync.DefaultServerMessenger - [Thread 11] Invoking refresher Umbraco.Web.Cache.MacroCacheRefresher on single server instance, message type RefreshAll
    2014-08-28 13:07:10,900 [17] DEBUG UmbracoExamine.DataServices.UmbracoLogService - [Thread 11] ReIndexNode with type: content, Provider=InternalIndexer, NodeId=3357
    2014-08-28 13:07:10,900 [17] DEBUG UmbracoExamine.DataServices.UmbracoLogService - [Thread 11] AddSingleNodeToIndex with type: content, Provider=InternalIndexer, NodeId=3357
    2014-08-28 13:07:10,900 [17] DEBUG UmbracoExamine.DataServices.UmbracoLogService - [Thread 11] ReIndexNode with type: content, Provider=ExternalIndexer, NodeId=3357
    2014-08-28 13:07:10,900 [17] DEBUG UmbracoExamine.DataServices.UmbracoLogService - [Thread 11] AddSingleNodeToIndex with type: content, Provider=ExternalIndexer, NodeId=3357
    2014-08-28 13:07:10,915 [17] DEBUG umbraco.content - [Thread 11] Content initialized (was already in context)
    2014-08-28 13:07:10,946 [17] DEBUG umbraco.content - [Thread 11] Saving content to disk on thread '' (Threadpool? True)
    2014-08-28 13:07:10,978 [17] DEBUG umbraco.content - [Thread 11] Saved content on thread '' in 00:00:00.0228004 (Threadpool? True)
    2014-08-28 13:07:10,978 [17] INFO  Umbraco.Web.BatchedServerMessenger - [Thread 11] Submitting calls to distributed servers
    2014-08-28 13:07:10,993 [17] DEBUG UmbracoExamine.DataServices.UmbracoLogService - [Thread 13] Index created for node, Provider=ExternalIndexer, NodeId=3357
    2014-08-28 13:07:11,024 [17] DEBUG UmbracoExamine.DataServices.UmbracoLogService - [Thread 12] Index created for node, Provider=InternalIndexer, NodeId=3357
    2014-08-28 13:07:11,040 [17] DEBUG Umbraco.Web.UmbracoModule - [Thread 16] Begin request: https://umbraco03.expohotels.com/umbraco/webservices/cacheRefresher.asmx.
    2014-08-28 13:07:11,056 [17] DEBUG umbraco.content - [Thread 16] Content initialized (was already in context)
    2014-08-28 13:07:11,227 [17] DEBUG Umbraco.Web.BatchedServerMessenger - [Thread 11] Distributed server push completed with no nodes reporting an error
    2014-08-28 13:07:11,492 [17] DEBUG Umbraco.Web.UmbracoModule - [Thread 12] Begin request: https://adminpre.expohotels.com/umbraco/backoffice/UmbracoApi/Entity/GetAncestors?id=3357&type=document.
    2014-08-28 13:07:11,508 [17] DEBUG umbraco.content - [Thread 12] Content initialized (was already in context)
    2014-08-28 13:07:11,508 [17] DEBUG Umbraco.Web.UmbracoModule - [Thread 16] Begin request: https://adminpre.expohotels.com/umbraco/backoffice/UmbracoTrees/ContentTree/GetNodes?id=1061&application=content&tree=&isDialog=false.
    2014-08-28 13:07:11,508 [17] DEBUG umbraco.content - [Thread 16] Content initialized (was already in context)
    2014-08-28 13:07:43,114 [17] DEBUG Umbraco.Web.UmbracoModule - [Thread 13] Begin request: https://adminpre.expohotels.com/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds.
    2014-08-28 13:07:43,114 [17] DEBUG umbraco.content - [Thread 13] Content initialized (was already in context)
    2014-08-28 13:08:00,601 [17] DEBUG Umbraco.Web.Scheduling.Scheduler - [Thread 12] Scheduling interval executing
    2014-08-28 13:08:00,601 [17] DEBUG Umbraco.Web.Scheduling.ScheduledPublishing - [Thread 12] Scheduled publishing executing
    2014-08-28 13:08:00,601 [17] ERROR Umbraco.Web.Scheduling.ScheduledPublishing - [Thread 12] An error occurred with the scheduled publishing
    System.Net.WebException: The underlying connection was closed: An unexpected error occurred on a send. ---> System.IO.IOException: The handshake failed due to an unexpected packet format.
       at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest)
       at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest)
       at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest)
       at System.Net.Security.SslState.ForceAuthentication(Boolean receiveFirst, Byte[] buffer, AsyncProtocolRequest asyncRequest)
       at System.Net.Security.SslState.ProcessAuthentication(LazyAsyncResult lazyResult)
       at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
       at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
       at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
       at System.Net.TlsStream.ProcessAuthentication(LazyAsyncResult result)
       at System.Net.TlsStream.Write(Byte[] buffer, Int32 offset, Int32 size)
       at System.Net.PooledStream.Write(Byte[] buffer, Int32 offset, Int32 size)
       at System.Net.ConnectStream.WriteHeaders(Boolean async)
       --- End of inner exception stack trace ---
       at System.Net.WebClient.UploadDataInternal(Uri address, String method, Byte[] data, WebRequest& request)
       at System.Net.WebClient.UploadString(Uri address, String method, String data)
       at Umbraco.Web.Scheduling.ScheduledPublishing.Start(ApplicationContext appContext)
    2014-08-28 13:08:00,601 [17] DEBUG Umbraco.Web.Scheduling.ScheduledPublishing - [Thread 12] Scheduled publishing complete (took 3ms)
    2014-08-28 13:08:00,601 [17] DEBUG Umbraco.Web.Scheduling.ScheduledTasks - [Thread 12] Scheduled tasks executing
    2014-08-28 13:08:00,601 [17] DEBUG Umbraco.Web.Scheduling.ScheduledTasks - [Thread 12] Scheduled tasks complete (took 0ms)
    2014-08-28 13:08:00,601 [17] DEBUG Umbraco.Web.Scheduling.Scheduler - [Thread 12] Scheduling interval complete (took 3ms)
    2014-08-28 13:08:13,253 [17] DEBUG Umbraco.Web.UmbracoModule - [Thread 12] Begin request: https://adminpre.expohotels.com/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds.
    2014-08-28 13:08:13,253 [17] DEBUG umbraco.content - [Thread 12] Content initialized (was already in context)
    2014-08-28 13:08:29,430 [17] DEBUG Umbraco.Web.UmbracoModule - [Thread 13] Begin request: https://172.16.101.13/.
    2014-08-28 13:08:29,430 [17] DEBUG umbraco.content - [Thread 13] Content initialized (was already in context)
    2014-08-28 13:08:29,430 [17] DEBUG Umbraco.Web.Routing.PublishedContentRequestEngine - [Thread 13] FindDomain: Uri="https://172.16.101.13/"
    

    Umbraco01:

    2014-08-28 13:07:11,686 [6] DEBUG Umbraco.Web.UmbracoModule - [Thread 14] Begin request: https://umbraco01.expohotels.com/umbraco/webservices/cacheRefresher.asmx.
    2014-08-28 13:07:11,686 [6] DEBUG umbraco.content - [Thread 14] Content initialized (was already in context)
    2014-08-28 13:07:48,347 [6] DEBUG Umbraco.Web.Scheduling.Scheduler - [Thread 14] Scheduling interval executing
    2014-08-28 13:07:48,347 [6] DEBUG Umbraco.Web.Scheduling.Scheduler - [Thread 14] Current server (UMBRACO01) detected as a slave, no scheduled processes will execute on this server
    2014-08-28 13:07:48,347 [6] DEBUG Umbraco.Web.Scheduling.Scheduler - [Thread 14] Scheduling interval complete (took 0ms)
    2014-08-28 13:08:15,070 [6] DEBUG Umbraco.Web.UmbracoModule - [Thread 7] Begin request: https://172.16.101.11/.
    2014-08-28 13:08:15,070 [6] DEBUG umbraco.content - [Thread 7] Content initialized (was already in context)
    2014-08-28 13:08:15,070 [6] DEBUG Umbraco.Web.Routing.PublishedContentRequestEngine - [Thread 7] FindDomain: Uri="https://172.16.101.11/"
    2014-08-28 13:08:15,070 [6] DEBUG Umbraco.Web.Routing.PublishedContentRequestEngine - [Thread 7] FindDomain: Matches no domain
    2014-08-28 13:08:15,070 [6] DEBUG Umbraco.Web.Routing.PublishedContentRequestEngine - [Thread 7] FindDomain: Culture="en-GB"
    2014-08-28 13:08:15,070 [6] DEBUG Umbraco.Web.Routing.PublishedContentRequestEngine - [Thread 7] FindPublishedContentAndTemplate: Path="/"
    2014-08-28 13:08:15,070 [6] DEBUG Umbraco.Web.Routing.PublishedContentRequestEngine - [Thread 7] FindPublishedContent: Begin finders
    2014-08-28 13:08:15,070 [6] DEBUG Umbraco.Web.Routing.ContentFinderByNiceUrl - [Thread 7] Test route "/"
    2014-08-28 13:08:15,070 [6] DEBUG Umbraco.Web.Routing.ContentFinderByNiceUrl - [Thread 7] Got content, id=1060
    2014-08-28 13:08:15,070 [6] DEBUG Umbraco.Web.Routing.PublishedContentRequestEngine - [Thread 7] FindPublishedContent: End finders, a document was found (took 1ms)
    2014-08-28 13:08:15,070 [6] DEBUG Umbraco.Web.Routing.PublishedContentRequestEngine - [Thread 7] HandlePublishedContent: Begin
    2014-08-28 13:08:15,070 [6] DEBUG Umbraco.Web.Routing.PublishedContentRequestEngine - [Thread 7] FollowInternalRedirects: Found umbracoInternalRedirectId=1062
    2014-08-28 13:08:15,070 [6] DEBUG Umbraco.Web.Routing.PublishedContentRequestEngine - [Thread 7] FollowInternalRedirects: Redirecting to id=1062
    2014-08-28 13:08:15,070 [6] DEBUG Umbraco.Web.Routing.PublishedContentRequestEngine - [Thread 7] EnsurePublishedContentAccess: Page is not protected
    2014-08-28 13:08:15,070 [6] DEBUG Umbraco.Web.Routing.PublishedContentRequestEngine - [Thread 7] HandlePublishedContent: End.
    

    I'll appreciate any suggestions or test.

    PD: Sorry for my english.

  • Shannon Deminick 1486 posts 4986 karma points hq
    Aug 29, 2014 @ 02:22
    Shannon Deminick
    0

    The only error i see is for scheduled publishing, that's because we've fixed that for LB environments, you need to adjust your settings for distributed cache, see updated docs:

    http://our.umbraco.org/documentation/Installation/load-balancing

    specifically:

    http://our.umbraco.org/documentation/Installation/load-balancing#Correctconfigforscheduledpublishing&tasks

    Though these new settings should not affect your normal distributed caching.

    It's showing that it's sending msgs to your servers from 'Umbraco 3':

    2014-08-28 13:07:10,853 [17] DEBUG Umbraco.Core.Sync.DefaultServerMessenger - [Thread 11] Performing distributed call for refresher Umbraco.Web.Cache.PageCacheRefresher, message type: RefreshById, servers: https://umbraco03.expohotels.com/umbraco/webservices/cacheRefresher.asmx;https://umbraco02.expohotels.com/umbraco/webservices/cacheRefresher.asmx;https://umbraco01.expohotels.com/umbraco/webservices/cacheRefresher.asmx, ids: 3357, json:

    'Umbraco 1' is reporting that it's receiving the msg:

    2014-08-28 13:07:11,686 [6] DEBUG Umbraco.Web.UmbracoModule - [Thread 14] Begin request: https://umbraco01.expohotels.com/umbraco/webservices/cacheRefresher.asmx.

  • Genoher 3 posts 53 karma points
    Aug 29, 2014 @ 14:23
    Genoher
    0

    Thank you very much for the quick response.

    I've checked the settings and it seems all right.

    I'm back to put the previous version and it works.

    I am working with the binaries at the moment. I will try, to download the source code of Umbraco, and perform refresh content after publishing (umbraco.library.RefreshContent() or Services.ContentService.SaveAndPublish()).

    I think that I have the same or very similar problem that the next issue. Because the cache is not refreshed. http://issues.umbraco.org/issue/U4-581

    Again, thank you very much Shannon ;)


    Comment from Dan Booth of issue U4-581

    1. You set a node to publish on the master server
    2. When the time comes for publication the node is published, and a distributed call informs the other servers, and the node gets published BUT the cache is not refreshed. This leads to the "Oops: this document is published but is not in the cache (internal error)" - see U4-3145
    3. The node is then in limbo, as it's status is "Published" but it has no URL etc. and isn't in the XML cache

  • Shannon Deminick 1486 posts 4986 karma points hq
    Sep 02, 2014 @ 02:01
    Shannon Deminick
    0

    @Genoher the problem that you mentioned is specifically about scheduled publishing. Is that your problem or is it a problem with normal publishing operations?

    Also, as I mentioned above you need to adjust your configuration for the new settings that fix scheduled publishing in a load balanced environment:

    you need to adjust your settings for distributed cache, see updated docs: http://our.umbraco.org/documentation/Installation/load-balancing

    specifically: http://our.umbraco.org/documentation/Installation/load-balancing#Correctconfigforscheduledpublishing&tasks

  • Genoher 3 posts 53 karma points
    Sep 16, 2014 @ 17:02
    Genoher
    1

    Hello All,

    @Shannon: Sorry for not answering earlier. Finally, we decided to postpone the upgrade. This week I have taken up this task and at the end I think I found the problem.

    First of all, I want to tell you that the problem wasn’t the scheduled publishing because we didn't use it. So the problem was in the cache refresher, which doesn't refresh the cache file "umbraco.config" in the frontends somehow it happen in the backoffice.

    In the new version 7.1.6, there is an extra check using the parameter AppId (HttpRuntime.AppDomainAppId). In our environment, the three instances (backoffice front01, front02) had the same AppDomainAppId. After changing the Application Id of the different instances the problem was solved.

    To have different AppDomainAppId I changed the id of the application (from the advanced configuration of the website).

    Advanced Settings

    The code:

    //check if this is the same app id as the one passed in, if it is, then we will ignore
    // the request - we will have to assume that the cache refeshing has already been applied to the server
    // that executed the request.
    if (SystemUtilities.GetCurrentTrustLevel() == AspNetHostingPermissionLevel.Unrestricted)
    {
         //we can only check this in full trust. if it's in medium trust we'll just end up with 
         // the server refreshing it's cache twice.
         if (HttpRuntime.AppDomainAppId == appId)
         {
              return;
         }
    }
    

    Link to commit: https://github.com/umbraco/Umbraco-CMS/commit/3374f9e02301941fe45d14568976adfbf65ff5b0

  • Shannon Deminick 1486 posts 4986 karma points hq
    Sep 17, 2014 @ 01:20
    Shannon Deminick
    0

    Hi,

    Yes that is absolutely the issue, we've actually fixed this yesterday. You can also see the latest comments on this thread which also has a workaround posted:

    http://our.umbraco.org/forum/getting-started/installing-umbraco/56309-Load-balancing-distributed-call-not-updating-cache-(716)

    Here's the logged issue:

    http://issues.umbraco.org/issue/U4-5491

    Here's the fix:

    https://github.com/umbraco/Umbraco-CMS/commit/7437240d096dbec6086dea64efeb29b27e19458a

  • Stefan Kip 1578 posts 4013 karma points c-trib
    Feb 12, 2015 @ 12:04
    Stefan Kip
    0

    Thanks Genoher for the work-around :-)

  • Dhiren 58 posts 198 karma points
    Mar 13, 2015 @ 14:26
    Dhiren
    0

    Hi Everyone,

    Here solution is given specifically to Scheduled publishing. We are facing problem in non scheduled publishing. Everything we have checked based on http://our.umbraco.org/documentation/Installation/load-balancing/

    But still we are facing issue of republishing automatically. Just to let you know we are using Citrix load balancer as i read somewhere that sometimes load balancing setup also matters in publish.

    Please help on this.

    Thanks,
    Dhiren 

Please Sign in or register to post replies

Write your reply to:

Draft