Conflit de réplication

Forum destiné aux questions sur le développement : Formules, LotusScript, Java ...

Conflit de réplication

Messagepar kagura31 » 16 Oct 2009 à 09:37

Bonjour,

J'aimerai détecter l'évènement de conflit de réplication dans une base mail.
J'ai essayé utiliser l'exemple "extconf.c" mais je ne vois rien.
J'ai essayé de détecter l'évènement EM_NSFCONFLICTHANDLER (en AFTER et en BEFORE) après avoir créé un conflit dans mes bases mails mais je ne vois rien.

Voici les manip :
Je modifie un mail sur le serveur, puis je modifie le même mail en local.
Je réplique et là j'observe un conflit.

Mon but final serait de garder le mail modifié en local et de supprimer le conflit.

Voici une partie de mon code :
Code : Tout sélectionner
#define EM_NSFCONFLICTHANDLER   75   

HEMREGISTRATION m_RegistrationHandle75;
   m_gHandlerProc = NULL;
   m_gRecursionID = 0;
   m_db = NULLHANDLE;
   m_RegistrationHandle75 = NULLHANDLE;

DWORD CExtmgrspyApp::RegisterEntry(void)
{
     error = EMRegister( EM_NSFCONFLICTHANDLER,
                  EM_REG_BEFORE,           
                  (EMHANDLER)EMHandlerProc,
                                m_gRecursionID,
                                                &m_RegistrationHandle75);
}

STATUS LNPUBLIC EMHandlerProc( EMRECORD FAR * pExRecord )
{
      if (pExRecord->EId == EM_NSFCONFLICTHANDLER && pExRecord->NotificationType == EM_BEFORE)
   {
      sprintf("EMHandlerProc EM_NSFCONFLICTHANDLER occurs");
   }
}
kagura31
Apprenti-posteur
Apprenti-posteur
 
Message(s) : 115
Inscrit(e) le : 12 Avr 2006 à 15:08
Localisation : Lyon

Messagepar JYR » 16 Oct 2009 à 13:50

Conflit dans une base mail? C'est une base d'équipe?
Tu as beaucoup de conflits?

Merci,

JYR
Avatar de l’utilisateur
JYR
Empereur des posts
Empereur des posts
 
Message(s) : 1573
Inscrit(e) le : 10 Jan 2005 à 14:47
Localisation : Quebec

Messagepar kagura31 » 16 Oct 2009 à 14:13

Oui le conflit est dans une base mail en local et sur serveur.
Je peux avoir beaucoup de conflits en fonction des manipulations du mail.

J'ai une réplication toute les 10 mins, le mail peut etre modifier sur le serveur et en local donc risque de conflit au moment de la réplication.
Mon problème c'est que je ne détecte pas l'évèment de conflit EM_NSFCONFLICTHANDLER après la réplique.
kagura31
Apprenti-posteur
Apprenti-posteur
 
Message(s) : 115
Inscrit(e) le : 12 Avr 2006 à 15:08
Localisation : Lyon

Messagepar Jérome Deniau » 18 Oct 2009 à 01:52

Ta dll ets bien installée sur le client qui effectue la réplication (extmagr_addins=trucmuche.dll)?
Côté serveur aucun intérêt sauf si un serveur est en cause (cçd que 2 serveurs répliquent).
Jérome Deniau
 

Messagepar kagura31 » 19 Oct 2009 à 08:07

La DLL est bien dans le notes.ini.
Je suis en version 7.
kagura31
Apprenti-posteur
Apprenti-posteur
 
Message(s) : 115
Inscrit(e) le : 12 Avr 2006 à 15:08
Localisation : Lyon

Messagepar kagura31 » 26 Oct 2009 à 10:00

J'aimerai pouvoir gérer les conflits de réplication d'un serveur vers une base local, en utilisant les API C et en particulier l'évenement EM_NSFCONFLICTHANDLER.
kagura31
Apprenti-posteur
Apprenti-posteur
 
Message(s) : 115
Inscrit(e) le : 12 Avr 2006 à 15:08
Localisation : Lyon

Messagepar Jérome Deniau » 26 Oct 2009 à 22:18

Un serveur ne réplique jamais avec un poste (local), donc c'est toujours du côté du poste qu'il faut gérer le problème....
Jérome Deniau
 

Messagepar kagura31 » 27 Oct 2009 à 09:40

Je sais.
Justement je n'arrive pas à voir l'évenement de conflit.
J'arrive à créer un conflit mais rien dans les traces.
J'ai essayé l'exemple mais pareil, je n'arrive pas à voir l'évenement
kagura31
Apprenti-posteur
Apprenti-posteur
 
Message(s) : 115
Inscrit(e) le : 12 Avr 2006 à 15:08
Localisation : Lyon

Messagepar Jérome Deniau » 29 Oct 2009 à 14:02

Il faut à mon avis utilise NSFNoteUpdateExtended, côté serveur je pense (mais pas si sûr), tu récupères le nom de la base, et le document, si le document contient un champ $Conflict c'est gagné. Tu peux utiliser extmgr pour savoir quel événement est déclenché....... de mémoire l'exemple enregistre tous les éléments possibles et inimaginables, ensuite il faut juste déclarer correctement la bonne fonction de gestion d'événement.
Jérome Deniau
 

Messagepar kagura31 » 03 Nov 2009 à 14:42

J'ai fais des tests, l'évènement NSFNoteUpdateExtended et NSFNoteUpdate n'apparaissent pas après la réplication lors d'un conflit.
J'utilise l'exemple extmgr pour m'afficher tous les évènements et essayer d'en trouver un mais la majorité des évènement ne sont pas référencer.
Le pire c'est que je ne vois même pas avec cette exemple l'évènement EM_NSFCONFLICTHANDLER.
kagura31
Apprenti-posteur
Apprenti-posteur
 
Message(s) : 115
Inscrit(e) le : 12 Avr 2006 à 15:08
Localisation : Lyon

Messagepar oguruma » 04 Nov 2009 à 14:37

et pourquoi ne pas utiliser les NotesEntryCollection... on a une propriété qui nous renvoie si le document est de type conflit ou passer par une navigateur de vue ou faire un db.search sur la présence du champ $Conflits et traiter la collection de documents en conséquence ou tout simplement prévoir dans la base une vue qui recence uniquement les documents conflit et traiter cette vue
Bien à vous

http://www.dominoarea.org/oguruma/

Les téléphones PORTABLES dans les TGV y en a MARRRE de ces voyageurs qui ne respectent pas les autres ! ARRET DES PORTABLES SVP - Merci

Fumeurs ! respectez les non fumeurs !!!
Fumeurs ! respectez la loi de février 2007 et les lieux publics !!! (ie. hall de gares)
Avatar de l’utilisateur
oguruma
Super V.I.P.
Super V.I.P.
 
Message(s) : 4086
Inscrit(e) le : 16 Déc 2004 à 08:50
Localisation : LILLE


Retour vers Développement

cron