Das Notes Forum

Domino 9 und frühere Versionen => ND6: Administration & Userprobleme => Thema gestartet von: chrisgruebl am 27.12.04 - 09:18:17

Titel: Problem mit $UpdatedBy Feld - übergelaufen?
Beitrag von: chrisgruebl am 27.12.04 - 09:18:17
Servus

Ich habe hier einen Domino 6.5.1IF1 Server und bei einer DB ist offenbar das $UpdatedBy Feld 'übergelaufen' und spielt jetzt verrückt (beim Replizieren werden offenbar unendlich viele 64kb Dateien beim 'Empfangenden' angelegt (*.DTF im Temp)), vermutlich weil das $UpdatedBy Feld 'verstümmelt' ist (sonderzeichen etc.) - Die defekten Einträge sind in der Empfangenden DB nicht enthalten - werden gesendet, können nicht eingetragen werden, werden gesendet... bis die Platte voll ist ;-(

Wie kann ich das wieder bereinigen? Ich hätte 'Einträge in $UpdatedBy Feldern begrenzen schon auf 2 beschränkt, hilft jedoch leider nichts.... Die alten vielen Einträge bleiben trotzdem drinnen...

Kann man das irgendwie manuell löschen (kann ruhig vorläufig alles weg sein in dem Feld)?

cu
Chris
Titel: Re: Problem mit $UpdatedBy Feld - übergelaufen?
Beitrag von: Semeaphoros am 27.12.04 - 09:36:29
Kannst Du das Dokument denn sonst noch öffnen? Du kannst einen Agenten erstellen, der das Feld löscht: Formelagent mit folgendem Inhalt:

FIELD $UpdatedBy := @DeleteField

Könnte allerdings sein, dass er da - weils ein Systemfeld ist - das nicht so gerne hat. Dann würde wohl nur noch LotusScript helfen.
Titel: Re: Problem mit $UpdatedBy Feld - übergelaufen?
Beitrag von: chrisgruebl am 27.12.04 - 10:18:21
Servus

>Kannst Du das Dokument denn sonst noch öffnen?

Ja, man kann offenbar ohne Probleme mit der DB und auch den betroffenen Dokumenten arbeiten, jedoch eben nicht mehr replizieren...

> Du kannst einen Agenten erstellen, der das Feld löscht: Formelagent mit folgendem Inhalt:

Danke für den Tipp, klappt jedoch leider nicht, die $* Felder stehen irgendwie nicht als Datenbankfelder zur Verfügung um damit was zu machen. Andere Felder löscht er brav...

cu
Chris
Titel: Re: Problem mit $UpdatedBy Feld - übergelaufen?
Beitrag von: Semeaphoros am 27.12.04 - 10:27:35
Versuchs mit einem LS-Agenten, der auf die markierten Dokumente losgeht:

Option Declare

dim S as New NotesSession
dim dbThis As NotesDatabase
dim colThis As NotesDcoumentCollection
dim docThis As NotesDocument

set dbThis = s.CurrentDatabase
set colThis = dbThis.UnprocessedDocuments

if colThis.Count > 0 then
  set docThis = colThis.GetFirstDocument
  call docThis.RemoveItem ("$UpdatedBy")
  cal docThis.Save(True,True)
end if


Vorbehalt: hab das nicht ausprobiert.

Variante, wenn auch das nix nützt, versuchs mit

  call docThis.ReplaceItemValue("$UpdatedBy","")

anstatt von RemoveItem
Titel: Re: Problem mit $UpdatedBy Feld - übergelaufen?
Beitrag von: chrisgruebl am 27.12.04 - 11:18:28
Servus

> Variante, wenn auch das nix nützt, versuchs mit
>  call docThis.ReplaceItemValue("$UpdatedBy","")
> anstatt von RemoveItem

Tnx, hilft aber leider auch nicht :-(

Beides probiert, läuft fehlerfrei durch und ändert aber auch nichts...

Protokoll:
Agent 'test1' wurde am 27.12.2004 11:10:58 gestartet
Bearbeitet ausgewählte Dokumente: insgesamt 1
1 Dokumente gefunden, die die Suchkriterien erfüllen
LotusScript Code ausgeführt
Agent 'test1' wurde am 27.12.2004 11:10:58 beendet

Kopieren etc. hilft ja auch alles nichts da ja das Feld befüllt bleibt...

Oder kann man vielleicht irgendwie beim replizieren verbieten das er das Feld repliziert (vermutlich nicht) oder einen Zähler verwenden, sprich es darf nur 1 mal versucht werden das zu senden oder etwas ähnliches?

cu
Chris
Titel: Re: Problem mit $UpdatedBy Feld - übergelaufen?
Beitrag von: Semeaphoros am 27.12.04 - 11:20:58
Warum hilft Kopieren nichts? Dabei wird ja ein neues Dokument angelegt, das sollte dann auch ein neues $UpdatedBy-Feld bekommen.
Titel: Re: Problem mit $UpdatedBy Feld - übergelaufen?
Beitrag von: chrisgruebl am 27.12.04 - 11:49:28
Servus

>Warum hilft Kopieren nichts? Dabei wird ja ein neues Dokument >angelegt, das sollte dann auch ein neues $UpdatedBy-Feld bekommen.

Wenn ich das ganze Dokument kopiere leider nicht...
Das $Revisions Feld ist dann weg (Leer), $UpdatedBy ist 1:1 vorhanden (Einziger Unterschied: Seq.-Num: alt = 34, neu = 1), ach ja, die Verbindung zu den Childs ist natürlich auch weg, also würde es eh nicht viel helfen ;-(

cu
Chris
Titel: Re: Problem mit $UpdatedBy Feld - übergelaufen?
Beitrag von: Semeaphoros am 27.12.04 - 11:52:02
Ok, da müsste man dann auch noch die Kinderchen umziehen. Das würde mit LS durchaus machbar sein, ist aber dann schon etwas mehr, als das oben ...... Vielleicht hat ja sonst noch jemand ne einfachere Idee ....
Titel: Re: Problem mit $UpdatedBy Feld - übergelaufen?
Beitrag von: koehlerbv am 27.12.04 - 13:53:26
@Chris:
Wie kommst Du denn darauf, dass gerade das $UpdatedBy-Item das Problem verursachen sollte ? Kannst Du überhaupt das Dokument lokalisieren, das dieses Problem verursacht ?

@Jens:
Das $UpdatedBy-Item wird von Notes eifersüchtig bewacht - das kannst Du nicht manipulieren - auch nicht per API (das ist nämlich aus gutem Grunde nicht dokumentiert). Beim Kopieren eines Dokuments per LS bleibt das Item erhalten (was ja auch gut so ist). $UpdatedBy wird man nur los, wenn man alle Items in ein neues Dokument kopiert. Da sich $UpdatedBy nicht manipulieren lässt, wird dabei ergo auch ein neues Item angelegt.

Bernhard
Titel: Re: Problem mit $UpdatedBy Feld - übergelaufen?
Beitrag von: Semeaphoros am 27.12.04 - 14:42:45
Bernhard, genau das hab ich eigentlich auch schon so befürchtet und deshalb auch nie ausprobiert.
Titel: Re: Problem mit $UpdatedBy Feld - übergelaufen?
Beitrag von: koehlerbv am 27.12.04 - 14:45:09
Na, "befürchten" würde ich das nicht nennen - es ist ja gut so. Wenn an dem Item jeder Depp rumschrauben könnte, würde ein Notes-Dokument einiges an Authentizität verlieren  ;)

Grüsse über die weissen Berge in die schöne Schweiz,
Bernhard
Titel: Re: Problem mit $UpdatedBy Feld - übergelaufen?
Beitrag von: Semeaphoros am 27.12.04 - 14:50:10
Absolut richtig, ungeschickte Wortwahl von mir .... :)

Hier schneits gerade, deshalb grüsse zurück ins ebenfalls schöne Oberbayern
Titel: Re: Problem mit $UpdatedBy Feld - übergelaufen?
Beitrag von: chrisgruebl am 28.12.04 - 10:52:00
Servus Jens und Bernhard

Tnx für die Hilfe, Problem ist teilgelöst ;-)

Das Problem mit dem Replizieren ist behoben! Schuld war daran doch nicht das $UpdatedBy Feld sondern schlicht und einfach eine Tabelle mit zu vielen Zeilen, da kam er dann irgendwie in eine Endlosschleife...

Aber, er 'kürzt' mir das $UpdateBy Feld nach wie vor nicht, es war nun mal Zufall das die Tabelle bei genau den Dokumenten übergelaufen ist wo eben auch die $UpdateBy voller sind wie sie sein dürften. Daher der Verdacht....

Eingestellt wären max. 10 Einträge, in den betroffenen Dokumenten sind jedoch ein paar Hundert Einträge...

Ist zwar nicht so schlimm weil ja wieder alle arbeiten können, aber da stimmt ja was nicht....

Bei anderen Dokumenten bleiben max. 10 Einträge drinnen...

cu
Chris
Titel: Re: Problem mit $UpdatedBy Feld - übergelaufen?
Beitrag von: Semeaphoros am 29.12.04 - 09:33:29
Bin mir da nicht sicher, ob die Anzahl der Einträge zurückgesetzt werden, wenn das Fläg später gesetzt wird. Aber ein Compact könnte da vielleicht Abhilfe schaffen, und in diesem Falle würde ich eigentlich auch einen Fixup über die DB laufen lassen.
Titel: Re: Problem mit $UpdatedBy Feld - übergelaufen?
Beitrag von: chrisgruebl am 30.12.04 - 18:58:09
Servus

Compact habe ich schon x-mal drübergelassen (läuft sowiso jede Nacht), aber der FixUp war's, jetzt sind die auch bei allen so kurz wie sie sein sollen :-)

tnx und cu
Chris
Titel: Re: Problem mit $UpdatedBy Feld - übergelaufen?
Beitrag von: TMC am 30.12.04 - 19:46:05
@Jens:
Das $UpdatedBy-Item wird von Notes eifersüchtig bewacht - das kannst Du nicht manipulieren - auch nicht per API (das ist nämlich aus gutem Grunde nicht dokumentiert). Beim Kopieren eines Dokuments per LS bleibt das Item erhalten (was ja auch gut so ist). $UpdatedBy wird man nur los, wenn man alle Items in ein neues Dokument kopiert. Da sich $UpdatedBy nicht manipulieren lässt, wird dabei ergo auch ein neues Item angelegt.

Du sprichst wohl von "normalen" Dokumenten, Bernhard.

Denn via NotesNoteCollection kann ich beliebig das $UpdatedBy-Feld ändern, z.B. via
Code
Dim noteColl As NotesNoteCollection
Set noteColl = db.CreateNoteCollection(False)
Call noteColl.SelectAllDesignElements(True)
Call noteColl.BuildCollection
(...)
Call ndoc.ReplaceItemValue("$UpdatedBy", session.UserName)

Ich habe das jetzt aber nicht ausprobiert, ob das bei normalen Doks nicht geht.
Meines Erachtens sollte es aber auch so bei normalen Doks klappen, denn Notes-Intern sollte das egal sein, ob es sich um Design-Notes handelt oder nicht.
Titel: Re: Problem mit $UpdatedBy Feld - übergelaufen?
Beitrag von: TMC am 30.12.04 - 20:02:56
Ich revidiere mein letztes Posting:

Habe die NotesNoteCollection - Klasse gerade mit "normalen" Doks getestet, dort werden via ReplaceItemValue bestehende Einträge nicht entfernt.
Klappt also nur mit Design-Dokumenten. Da muss also Iris in der Tat noch was zwischengeschaltet haben, damit diese nicht angefasst werden.
Dieser Test bestätigt also Bernhard's Aussage  :)
Titel: Re: Problem mit $UpdatedBy Feld - übergelaufen?
Beitrag von: koehlerbv am 30.12.04 - 21:18:04
Hier kannst Du Dich auf meine Aussage absolut verlassen, Matthias.  ;)

By the way: Design-Elemente verwalten (aus sicherlich bekanntem Grund) nur einen $UpdatedBy-Eintrag. Wer also ein Design-Element "anfasst", steht immer im $UpdatedBy-Item. Bis der nächste kommt ...  ;D

Bernhard