Das Notes Forum
Domino 9 und frühere Versionen => ND8: Entwicklung => Thema gestartet von: emadowo am 18.04.12 - 14:48:37
-
Hallo,
wir haben gestern einen Notes-Cluster einrichten lassen. Heute verschwanden aus eigenprogrammierten Datenbanken einige Dokumente. Der Einrichter meint, es liegt an der Programmierung, der Programmierer muß wissen, wie man clusterfähig programmiert.
Nun, der Programmierer im Hause bin ich und habe KEINE Ahnung, wie man clusterfähig programmiert. Was sind die "Voraussetzungen" zur clusterfähigen Programmierung? Wo finde ich Hilfe dazu? Administratorhilfe und Designerhilfe geprüft, das bringt mich nicht weiter..
Masken, Ansichten, Seiten, Gliederung, ACL, Rollen, @Funktionen, @Lookups, einfache Scripts (z.B. "setze bei allen Dokumente dieser Ansicht das Feld x auf Wert 0 ) ist eigentlich das einzige, was ich verwende.
Danke für eure Tipps!
Grüße
Erwin
-
Verwendest Du Leserfelder?
Bernhard
-
jep - und Autorenfelder - ich ahne schlimmes...
Erwin
-
"Clusterfähige Programmierung" ist eine interessante Anforderung.
Vielleicht bin ich zu naiv, aber m.W. laufen alle NotesDatenbanken, die mit mehreren Repliken funktionieren, auch auf einem Cluster. Soll heißen, man muss schon ganz schön "wilde Sau" spielen, um das nicht hinzubekommen.
Dass bei Euch durch Einführung eines Clusters Dokumente verschwunden sind, hat mit Sicherheit nichts mit dem Cluster an sich zu tun, sondern damit, dass ein neuer Server dazugekommen ist, der nicht korrekt eingerichtet wurde (Gruppen im Adressbuch, Berechtigung in der ACL der Datenbank usw.), womit ich nicht die Einrichtung des Servers an sich in Frage stellen möchte. Aber irgendetwas passt da nicht. Siehe auch die heute parallel laufende Diskussion um durch Replikation gelöschte Dokumente im Admin-Bereich. Das wird bei Euch wohl ähnlich liegen.
Also, den Vorwurf der nicht clusterfähigen Programmierung zieh Dir nicht an.
PS: Autorenfelder sind nicht tragisch, da die mit Editorrechten ausgehebelt werden können. Leserfelder nicht!
EDIT: Servernamen hart in Leserfelder einzutragen wäre so ein Thema "wilde Sau", also falls Du das getan hast, nehme ich meine obige Aussage zu dem Vorwurf zurück :)
-
Clusterfähige Programmierung heisst für mich beispielsweise, dass ich anstelle von Open ein OpenWithFailover verwende.
Es Cluster nützts nichts, wenn programmtechnisch auf einen bestimmten Server zugegriffen wird. Ich gebe aber zu, dass des zuweilen mühsam zu programmuieren ist, insbesondere bei periodischen Agenten.
Andreas
-
Und bei Xpages kommen dann halt auch so Sachen wie sessionScope (nur im RAM eines Servers) usw. dazu.
-
bzgl. den "verschwundenen" Dokumenten schau auch mal hier: http://atnotes.de/index.php/topic,54120.0.html
-
Clusterfähige Programmierung bedeutet (kein Anspruch auf Vollständigkeit):
- Formel: Verwenden von Replica- IDs für alle Befehle, wo das möglich ist anstatt Server : db- Syntax (Bsp. @DBLookup, @DBColumn, @Picklist, etc....)
- Script:
- OpenWithFailover anstatt Open wurde bereits genannt, und eben auch bei ws.DialogBox oder ws.Picklist den Servernamen / den Pfad dynamisch bestimmen
- ses.CurrentServer ist da ne ganz gute Methode (wenn ich aber auf einen ganz anderen Server zugreife wird es tricky...)
- Agenten: müssen auf beiden Servern laufen und dann anhand selbst bestimmter Parameter (da gibt es leider nix von IBM) untereinander ausmachen, wer denn nun die Aufgaben durchführt...
etc.
etc.
Einige der Punkte können -je nach Wichtigkeit der Funktion- auch ignoriert werden (wenn z.B. eine Infomail erst ne Stunde später rausgeht, wenn der Server, der den Agenten ausführt wieder da ist, ist sicher nicht so schlimm), aber das muss BEWUSST passieren...
-
Hallo,
wie immer habt ihr mir sehr gut geholfen! :)
Mittlerweile hat sich herausgestellt, daß es an den ACLs und Rollen lag: alle Server/-gruppen sollten alle Rollen besitzen. Das war auch schon alles.
Vielen Dank an alle!
Erwin