Autor Thema: Speicherkonflikte  (Gelesen 4233 mal)

Offline ZaLudtske

  • Senior Mitglied
  • ****
  • Beiträge: 319
  • Geschlecht: Männlich
  • carpe diem
Speicherkonflikte
« am: 28.07.09 - 13:31:54 »
Hallo,

ich habe ein Problem an dem ich mir zur Zeit die Zähne ausbeiße.

Seit dem letzten Release-Wechsel meines Hauptprojekts bekomme ich beim Speichern der Prozessdokumente immer die Fehlermeldung: Eine weitere Kopie dieses Dokuments wurde gespeichert, während Sie das Dokument bearbeiteten. Sollen Ihre Änderungen auch als Konfliktdokument gespeichert werden? Das Speichern findet über eine Masken-Aktion und "FileSave" statt.

Ich habe schon immer die Dokumente während der Verarbeitung über das NotesUIDocument und die Methode Save zusätzlich gespeichert und nie Probleme gehabt. In den Masken-Eigenschaften hatte ich auch schon immer die Option Konfliktbehandlung auf "Konflikte mischen" eingestellt. Ein Ändern der Option auf "Keine Konflikte" brachte keine Besserung. Auch den Tip aus dem Forum über das einfügen des Feldes "$ConflictAction" mit dem Wert "1" brachte, ebenso wie das Speichern des Dokuments über das backend-Objekt keinerlei Besserung.

Hat noch jemand eine Idee woran es liegen könnte?

mfg

R. Zaske
Rainer Zaske

MCSD - C#

Offline gossifu

  • Senior Mitglied
  • ****
  • Beiträge: 352
  • Geschlecht: Männlich
  • Dummheit schafft Freizeit
Re: Speicherkonflikte
« Antwort #1 am: 28.07.09 - 14:22:48 »
Und Du bist Dir sicher, das kein Agent oder anderer Backendprozess das Dokument, während es geöffnet ist, speichert.
Hast Du mal die beiden Versionen verglichen (z.Bsp. mit TS Delta)?

mfg

Kjeld
Immer lustig und vergnügt, bis der A.... im Sarge liegt. ;-)

Offline ZaLudtske

  • Senior Mitglied
  • ****
  • Beiträge: 319
  • Geschlecht: Männlich
  • carpe diem
Re: Speicherkonflikte
« Antwort #2 am: 28.07.09 - 14:36:01 »
Nein, es greift kein Agent darauf zu. Meine periodischen Agenten laufen alle morgens zwischen 5:00 und 7:00 Uhr. An den Vergleich mit Delta habe ich noch nicht gedacht. Beim nächsten Konflikt werde ich das mal machen und berichten.

Rainer
Rainer Zaske

MCSD - C#

Offline Pidray

  • Junior Mitglied
  • **
  • Beiträge: 58
  • 640K ought to be enough for anybody. (Bill Gates)
Re: Speicherkonflikte
« Antwort #3 am: 11.12.09 - 09:39:57 »
Fehlermeldung: Eine weitere Kopie dieses Dokuments wurde gespeichert, während Sie das Dokument bearbeiteten. Sollen Ihre Änderungen auch als Konfliktdokument gespeichert werden? Das Speichern findet über eine Masken-Aktion und "FileSave" statt.
...
R. Zaske

Guten Morgen,

ich habe das selbe Problem: in meiner Maske habe ich Schaltflächen, welche pro Schaltfläche folgende Formeln ausführen:
- @GetDocField
- @SetField
- @MailSend
- @Command( [FileSave] );   @Command( [RefreshHideFormulas] )

Seit kurzem bekommen wir vermehrt Speicherkonflikte, wenn ein Benutzer diese Schaltflächen drückt (ich kenne dies sonst nur, wenn zwei Benutzer im selben Dokument in versch. Repliken ändern wollen). 

Wird das Dokument bereits von einem Mitarbeiter bearbeitet, kann der nächste nur im Lesen-Modus darauf zugreifen: "Das Dokument wurde bereits von XYZ gesperrt".

Ich hatte schon vermutet, dass die Konflikte nur dann auftreten, wenn ein Benutzer im Lesen-Modus und einer im Edit-Modus das selbe Dokument geöffnet haben, da ein Konflikt nicht immer auftritt. Oder braucht es einen gewissen Zeitabstand zwischen dem Drücken von Button 1 und Button 2 ?

Ich weiss nicht, wo ich die Fehlersuche ansetzen kann.
Kjeld erwähnte einen Versionsvergleich mit "TS Delta" - was ist das ?
Und die Masken-Eigenschaft Konfliktbehandlung steuert doch nur die Replizierkonflikte, oder ?
Diese steht auf "Mischen/Keine Konflikte".

Ich hoffe, ihr könnt mir helfen!
Danke vorab.

Gruß
Katrin
Lotus Notes 6.0.1

Offline gossifu

  • Senior Mitglied
  • ****
  • Beiträge: 352
  • Geschlecht: Männlich
  • Dummheit schafft Freizeit
Re: Speicherkonflikte
« Antwort #4 am: 11.12.09 - 22:47:35 »
Hallo,

TS Delta = Teamstudio Delta, einziges, mir bekanntes Tool zum vergleichen von zwei Notes-Datenbanken bezüglich Gestaltung und Dokumenten.

Kann man in $UpdatedBy und $Revisions sehen, wer wann die Doks bearbeitet hat?
Oder gibt es Aktion vor, während oder nach dem Bearbeiten (Maskenereignisse)?

mfg

Kjeld
Immer lustig und vergnügt, bis der A.... im Sarge liegt. ;-)

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Speicherkonflikte
« Antwort #5 am: 12.12.09 - 01:21:42 »
Hallo Katrin,

hast Du in dieser Maske ein oder mehrere RichText Items, die der Benutzer nach Button-Betätigung noch ändern könnte, bevor er ggf. dann auf dem normalen Wege speichert? Ist Dir die Diskrepanz zwischen Backend und Frontend bekannt? Weisst Du, was in durch diesen Konflikt in Deinem Konstrukt eventuell schief laufen könnte?

Bernhard

Offline Pidray

  • Junior Mitglied
  • **
  • Beiträge: 58
  • 640K ought to be enough for anybody. (Bill Gates)
Re: Speicherkonflikte
« Antwort #6 am: 14.12.09 - 09:47:34 »
$UpdatedBy und $Revisions
da mehrere Leute die Buttons drücken dürfen, sind beide Felder mit mehreren Einträgen versehen. Allerdings kann ich Zeit und Benutzer nicht einander zuordnen.

Oder gibt es Aktion vor, während oder nach dem Bearbeiten (Maskenereignisse)?
Maske:
- in Querymodechange habe ich ein Script, welches je nach UserRoles Continue = True oder False zurückgibt.
- onSubmit beinhaltet @GetField + @SetField (und kein Save)

(Restinfos in der Antwort an koehlerbv)

Gruß
Katrin

« Letzte Änderung: 14.12.09 - 11:34:46 von Pidray »
Lotus Notes 6.0.1

Offline Pidray

  • Junior Mitglied
  • **
  • Beiträge: 58
  • 640K ought to be enough for anybody. (Bill Gates)
Re: Speicherkonflikte
« Antwort #7 am: 14.12.09 - 10:20:55 »
hast Du in dieser Maske ein oder mehrere RichText Items, die der Benutzer nach Button-Betätigung noch ändern könnte, bevor er ggf. dann auf dem normalen Wege speichert?
Ich habe 3 Felder, welche ich durch einen separaten Button im Lesemodus nach Neuanlage eines Dokumentes fülle - s. mein Problem (Vorarbeits-Felder mit Text + Link) http://atnotes.de/index.php/topic,45751.msg298158.html#msg298158. Davon waren zwei noch auf "Bearbeitbar" anstatt "Berechnet" gesetzt. Diese habe ich vor kurzem alle auf "Berechnet" mit Wert="" geändert. Ansonsten habe ich noch ein änderbares RT-Bodyfeld.
Die Konflikt-Meldung erscheint z.B. wenn der Benutzer im Edit-Modus zwei Buttons nacheinander drückt.

Ist Dir die Diskrepanz zwischen Backend und Frontend bekannt? Weisst Du, was in durch diesen Konflikt in Deinem Konstrukt eventuell schief laufen könnte?
kurz und knapp: Nein. Nein.

Anmerkung:
Meine DB ist eine Art kleiner Workflow. In der Maske gibt es verschiedene Abschnitte, welche je nach Inhalt vorheriger Felder verborgen bzw. angezeigt werden. In den Abschnitten gibt es mehrere Buttons, welche per @SetField diverse Protokoll-Text-Felder füllen und @MailSend auslösen, damit die Nachfolger wissen, dass sie loslegen können. Abschließend beinhalten die Buttons die Befehle @Command( [FileSave] );   @Command( [RefreshHideFormulas]), welche ich für die Verursacher der Konflikte hielt - obwohl diese Felder vorher auch schon so enthalten waren und fehlerfrei funktionierten.
Ich hab sogar im Administrator geschaut: ich war zur Konfliktzeit einziger Benutzer der Datenbank.

Ein weiteres Phänomen: meine o.g. drei Vorarbeitsfelder werden eigentlich erst im Lesemodus per Button gefüllt. Ich habe aber Dokumente, welche nach Bearbeitung ("Knöpfchen-drücken") diese Felder mehrfach enthalten (Doppeleintrags-ID: 0/1/2) - und keine Ahnung, woher das kommt, da nur ich den Vorarbeits-Button sehe und drücken kann.
Wenn ich in einer Ansicht stehe und per Agent @DeleteField ausführe, sehe ich in den Eigenschaften, dass diese Felder weg und Bruchteile von Sekunden später wieder 2fach vorhanden und gefüllt sind ...

Deshalb habe ich aufgehorcht als ich vom einem Programm zum Vergleichen verschiedener Versionen geschrieben hattet ...

Gruß
Katrin  ???

Edith merkt an: das tritt in der Schablone nicht auf, nur in der *.NSF
Lotus Notes 6.0.1

Offline Pidray

  • Junior Mitglied
  • **
  • Beiträge: 58
  • 640K ought to be enough for anybody. (Bill Gates)
Re: Speicherkonflikte
« Antwort #8 am: 14.12.09 - 13:48:30 »
hast Du in dieser Maske ein oder mehrere RichText Items ...
Ich hab mal eine ältere Sicherung angeschaut:
die drei Vorarbeits-Felder waren damals Textfelder + "Berechnet beim Anlegen",
in der aktuellen Version sind es Richtextfelder + "Berechnet".

Sollte dies wirklich der Grund für die Probleme sein ?

Gruß
Katrin

Lotus Notes 6.0.1

Offline gossifu

  • Senior Mitglied
  • ****
  • Beiträge: 352
  • Geschlecht: Männlich
  • Dummheit schafft Freizeit
Re: Speicherkonflikte
« Antwort #9 am: 16.12.09 - 11:04:36 »
Hallo Katrin,

Frontend ist die Instanz, deines Dokuments, welches Du gerade bearbeitest. Backend ist die Instanz, welche in der Datenbank gespeichert ist.
Beim Speichern werden die Änderungen des Frontends in das Backend geschrieben.

Es könnte daher gut möglich sein, dass einer Deiner Prozesse das Backenddokument ändert, während Du das Frontenddokument zum bearbeiten geöffnet hast. Dafür spricht auch der Button im Lesemodus.

Hast Du schon beide versionen verglichen? Oder kannst Du mal den Code der Buttons vollständig posten. Ohne Namen versteht sich.
Wenn nur Code in den Knöpfen ist, dann liegt auch hier die Ursache.

mfg

Kjeld
Immer lustig und vergnügt, bis der A.... im Sarge liegt. ;-)

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz