root/traduc/trunk/slony/raceconditions.xml

Revision 969, 4.4 kB (checked in by daamien, 8 months ago)

correction XML mal formé
test compilation OK

Line 
1 <?xml version="1.0" encoding="UTF-8"?>
2 <!-- DerniÚre modification
3      le       $Date$
4      par      $Author$
5      révision $Revision$ -->
6 <sect1 id="raceconditions"><title>Situations de compétition et &slony1;</title>
7
8 <indexterm><primary>situations de compétition</primary></indexterm>
9
10 <para> Non, il ne s'agit pas compétitions sportives;
11  <ulink url="http://www.wikipedia.org/"> Wikipedia </ulink>
12 décrit ce terme ainsi : <quote>Une situation de compétition, plus couramment nommée race condition, est un défaut dans un systÚme électronique ou informatique, non prévu lors de la conception, caractérisé par un résultat différent selon l'ordre dans lequel sont effectuées certaines opérations du systÚme. Lorsqu'une situation de compétition se produit, cela peut avoir des effets néfastes pendant une longue période, et le systÚme peut nécessiter d'être réinitialisé.</quote>
13
14 Dans les applications informatiques, les situations de compétitions arrivent la plupart du temps
15 au sein des applications distribuées ou multiprocesseurs lorsque différentes partie
16 de l'application dépendent de certains éléments partagé; si ce partage
17 est mal géré, des confusions (erreurs !) apparaissent. Plus précisément,
18 cela impliquent en général les situations où l'état de partage peut
19 être changé entre le moment ou il est vérifié et le moment ou il est utilisé.
20 </para>
21
22 <para> &slony1; a connu un certain nombre de situations de compétition au cours de son histoire :
23
24 <itemizedlist>
25
26 <listitem><para> Entre la version 1.0 et la version 1.1,
27    <xref linkend="stmtmoveset"/> a avait un problÚme car les noeuds n'avait
28      aucun moyen d'empêcher le traitement des événements <command>SYNC</command>
29      en provenance du noeud origine ( qu'ils considéraient comme un simple fournisseur,
30      et pas comme une source de données à répliquer) avant de reconnaître le changement
31      de rÃŽle ( d'abonné à fournisseur ).</para>
32
33 <para> Ceci fût corrigé en introduisant un nouvel événement <command>ACCEPT
34 SET</command> qui était soumis par le nouveau noeud origine; Ceci permettait
35 aux abonnés d'être conscients qu'il devait attendre l'événement
36 <command> MOVE SET </command>.</para> </listitem>
37
38 <listitem><para>Dans un certain nombre d'endroits, &slony1; utilise la commande
39     SQL <command>lock table sl_config_lock;</command> afin d'éviter les
40     situations de compétitions lorsque la valeur de la séquence
41     sl_log_status est changée. </para>
42 </listitem>
43
44 <listitem><para> L'option &lslon; <xref
45 linkend="slon-config-sync-interval-timeout"/> est utilisée pour éviter les situations
46       de compétition dans lesquelles la séquence d'action est dégagée par le trigger
47       au moment de l'insertion de ligne de log, ce qui rend le <quote>dégagement</quote> immédiatement
48       visible au processus de synchronisation, alors que la ligne de log correspondante
49       n'est pas encore visible. </para> </listitem>
50
51 <listitem><para> L'approche dite de  <quote>visibilité des images</quote>
52     utilisée par &slony1; pour déterminer quelle donnée répliquée doivent
53     être associée avec un <command>SYNC</command> spécifique, évite les
54     situations de compétition qui se produisent lorsque l'on essaie d'utiliser
55     simplement des timestamps ou des plages d'identifiants pour déterminer
56     quelles données doivent être répliquées.  </para> </listitem>
57
58 <listitem><para> Dans la branche 1.2, jusqu'à la version 1.2.11,
59     qui corrige ce bug, le <link linkend="logshipping"> log shipping </link>
60     avait une situation de compétition où chaque fois que la configuration
61     était rechargée par le &lslon; ( comme cela arrive souvent, notamment avec
62     linkend="stmtsubscribeset"/>), il y avait un risque que les identifiant de
63   <command>SYNC</command> utilisé pour l'ordonnancement correct et pour l'exécution
64   du log shipping soient décalées d'une unité.</para>
65
66 <para> Ceci fut corrigé dans la version 1.2.11 en transformant le numéro d'identifant,
67   qui était un variable située en mémoire (donc génératrice de problÚmes ) en un donnée
68   transactionnelle, stockée dans la base de donnée de l'abonné.</para>
69
70 <para> Ce problÚme ne fut jamais découvert lors des <link linkend="testbed">
71 bancs d'essai, </link> démontrant joliment que les situations de compétitions
72 sont souvent trÚs dépendantes du type de données stockée ou du rythme de l'application. </para>
73 </listitem>
74
75 </itemizedlist>
76
77 </para>
78
79 </sect1>
Note: See TracBrowser for help on using the browser.