2017-10-16 8 views
1

J'utilise le CMS Orckestra Composite C1 avec LoadBalancing et j'ai rencontré un problème avec la publication planifiée.Composite C1 - Publication planifiée avec LoadBalancing throws 'Aucune donnée n'existe étant donné les valeurs de clé de données'

Le scénario donné

  • Deux noeuds/serveurs, charge équilibrée.
  • accès à charge équilibrée (par exemple "www.mysite.com")
  • L'accès à chaque nœud individuellement à des fins de test (par exemple "www01.mysite.com")

I a créé un C1 type de données avec Scheduled Publishing ("has publishing" -flag est true). En ajoutant de nouveaux objets de données de ce type et en définissant une date dépubliée, l'enregistrement sera enregistré comme prévu. Cependant, lorsque la date et l'heure dépublier est atteint, le serveur parfois (pas toujours) jette l'exception suivante:

System.InvalidOperationException: No data exist given the data key values 
    at Composite.Verify.ThrowInvalidOperationException(String message) 
    at Composite.Data.DataFacade.GetDataByUniqueKey(Type interfaceType, Object dataKeyValue) 
    at Composite.C1Console.Scheduling.DataUnpublishSchedulerWorkflow.Execute() 
    at Composite.C1Console.Scheduling.BaseSchedulerWorkflow.finalizeCodeActivity_ExecuteCode(Object sender, EventArgs e) 
    at System.Workflow.ComponentModel.Activity.RaiseEvent(DependencyProperty dependencyEvent, Object sender, EventArgs e) 
    at System.Workflow.Activities.CodeActivity.Execute(ActivityExecutionContext executionContext) 
    at System.Workflow.ComponentModel.ActivityExecutorOperation.Run(IWorkflowCoreRuntime workflowCoreRuntime) 
    at System.Workflow.Runtime.Scheduler.Run() 

Si vous creusez dans la source de Composite C1, vous remarquerez que C1 essaie de faire quelque chose avec la tâche de planification et ne parvient pas à le faire. Vérifiez ce fichier source:

https://searchcode.com/file/116651989/CompositeC1/Composite.Workflows/C1Console/Scheduling/DataUnpublishSchedulerWorkflow.cs

En conséquence de ce processus défaillant, les C1 données qui doivent être inédits est invisible sur un nœud et visible sur l'autre, comme si elle ne serait pas ont été inédites (correctement).

Le même problème se produit lors de la publication d'enregistrements. J'ai cherché sur le web ouvert et n'était pas encore en mesure de trouver une réponse.

Répondre

0

Je ne suis pas sûr si l'exception ci-dessus est réellement causée par le problème de synchronisation. En fait, j'obtiens cette exception exacte si j'essaie d'enregistrer une donnée C1 avec une date non publiée/non publiée (comme une date dans le passé). Toutefois, le problème peut être résolu en modifiant les paramètres suivants dans les paramètres.

Choisissez un nœud Web Composite C1 comme serveur. La gestion du contenu ne doit être effectuée que sur ce serveur. Chaque autre noeud sera un client sur le serveur.

changer maintenant cette configuration valeur de clé de shared à server/client.

noeud A

<system.net> 
[...] 
    <appSettings> 
    <add key="Composite.LoadBalancing.Mode" value="server" /> 
    </appSettings> 
    <system.net> 

chaque autre noeud

<system.net> 
[...] 
    <appSettings> 
    <add key="Composite.LoadBalancing.Mode" value="client" /> 
    </appSettings> 
    <system.net>