• Willkommen im Geoclub - dem größten deutschsprachigen Geocaching-Forum. Registriere dich kostenlos, um alle Inhalte zu sehen und neue Beiträge zu erstellen.

Bug oder Feature?

Engywuck

Geowizard
Wenn ich in einem Cache etwas im Statusfeld eintrage und dann wieder zur Liste wechsle, wird meine Änderung in der Liste angezeigt.
Allerdings muss ich dann die Liste erst "Speichern", damit die Änderung auch im Cache ankommt. Versuche ich direkt, nach dem Ändern des Status den Wolf (ohne Speichern) zu verlassen, so fragt er mich, ob ich das Profil (?) speichern will - wenn ich dann Nein sage, so geht die Änderung des Status verloren.
Spannende Frage: Ist das jetzt ein tollte Feature, dessen Sinn ich nicht so ganz erkenne, oder wurde es hier einfach vergessen, die Daten direkt im Cache zu speichern? Oder gibts technische Hindernisse?
(Hintergrund: Wir bereiten derzeit den Urlaub cachemäßig vor - und da wird das Statusfeld genutzt, um schnell eine kurze Information zum Cache unterzubringen. Und die waren dann leider nach Java-Exceptions immer weg, wenn man nicht regelmäßig daran gedacht hat, alles zu speichern...)

Schöne Grüße,
Engywuck
 

salzkammergut

Geomaster
Die Daten, die in der Liste sichtbar sind werde im jeweilgen Profil in der Datei "index.xml" gespeichert. Wenn Du also in der Liste Änderungen vornimmst und CW schliesst OHNE zu speichern (z.B. über Anwendung -> Beenden) gehen diese Änderungen verloren. (Beim Spidern wird übrigens automatisch gespeichert). Da die index.xml recht groß werden kann, würde das Speichern nach jeder Änderung zu lange dauern. Du kannst aber das Speichern erzwingen ohne CW zu beenden mit "Anwendung -> Speichern". Da wird nur die "index.xml" geschrieben.

Im Gegensatz dazu werden Änderungen im Solver oder in den Notizen bei Auswahl eines anderen Caches sofort gespeichert, da sie separat in der Datei "cachename.xml" abgelegt sind.

Eigentlich sollten wir die Frage nach dem "Speichern" entfernen und bei jedem Verlassen von CW automatisch speichern. Der Menüeintrag "Speichern" kann ja bleiben (wenn man zwischenzeitlich die Änderungen in der Liste sichern will). Ich werde das bei Gelegenheit implementieren - derzeit ist aber die Stromversorgung meines Entwicklungsrechners im Eimer.

Grüße
salzkammergut
 
OP
Engywuck

Engywuck

Geowizard
salzkammergut schrieb:
Da die index.xml recht groß werden kann, würde das Speichern nach jeder Änderung zu lange dauern. Du kannst aber das Speichern erzwingen ohne CW zu beenden mit "Anwendung -> Speichern". Da wird nur die "index.xml" geschrieben.
Da Probleme ja nur Ansätze für Lösungen sind, wie wärs mit folgendem:
Änderungen in der Liste werden nicht nur im Speicher vermerkt (und später in Datei index.xml), sondern parallel noch in eine Datei tmpidx.xml gespeichert. Diese Datei wird beim "Speichern" gelöscht (da in index.xml, die gespeichert wird, ja auch alle Informationen drin sind). Sollte der CW abstürzen, so ist diese Datei nach dem Neustart noch vorhanden und die Einträge werden vom CW automatisch in Datei index.xml übernommen.
So wäre man gegen Abstürze weitgehend gefeit - aber bleibt die Frage, ob der Programmieraufwand den Nutzen rechtfertigt.

Engywuck
 

Sheriff Woody

Geocacher
Den Vorschlag von Engywuck finde ich sehr gut, zumal bei mir der Cachewolf auch öfter abstürzt. Dies passiert z.B. öfter mal dann, wenn ich einen Cache gefunden habe und diesen mit Datum und Zeit als "Gefunden" markieren möchte. Da ich ein zusätzliches Garmin-GPS zum Navigieren nutze, schalte ich den Cachewolf zwischen den Stationen immer aus (Standby) und muss ihn hierzu wieder einschalten. Gehe ich dann auf den Datumspicker neben dem Status, stürzt der Cachewolf regelmäßig (nicht immer, aber oft) ab.

Aber ohne Absturz ist es mir schon öfter passiert, dass die am aktuellen Tag als gefunden markierten Caches plötzlich wieder auf "nicht gefunden" zurücksprangen und Datum sowie Zeit des Fundes verloren waren, und ich mich fragte wieso.

Danke & Gruß
SW
 

lahmer

Geocacher
salzkammergut schrieb:
Eigentlich sollten wir die Frage nach dem "Speichern" entfernen und bei jedem Verlassen von CW automatisch speichern. Der Menüeintrag "Speichern" kann ja bleiben (wenn man zwischenzeitlich die Änderungen in der Liste sichern will). Ich werde das bei Gelegenheit implementieren - derzeit ist aber die Stromversorgung meines Entwicklungsrechners im Eimer.

Ich halte die derzeitige Frage nach dem Speichern eigentlich für sinnvoll... wenn ich mal irgendwelche Einstellungen falsch vorgenommen habe und nicht mehr weiß, was ich alles rückgängig machen muss, beende ich Cachewolf einfach ohne zu speichern. Diese Möglichkeit gibt es dann überhaupt nicht mehr, wenn beim Beenden die Nachfrage entfällt :?
 

MiK

Geoguru
An dieses Manko hatte ich auch schon gedacht. Allerdings wird auch jetzt schon viel sofort gespeichert, so dass Du sowieso mit diesem Vorgehen alles zurücknehmen kannst.
 

pfeffer

Geowizard
ich bin dafür, ohne Nachfrage zu speichern. Denn tatsächlich werden schon jetzt alle Informationen immer gespeichert (glaube ich jedenfalls). Allerdings werden sie nicht in den index.xml gespeichert, sondern in der jeweiligen cache.xml. Wenn man "Index neu erstellen" (oder so ähnlich) wählt, dann müssten auch die 'nicht gespeicherten Änderungen' sichtabr werden.

Gruß,
Pfeffer.
 
OP
Engywuck

Engywuck

Geowizard
pfeffer schrieb:
Denn tatsächlich werden schon jetzt alle Informationen immer gespeichert (glaube ich jedenfalls). Allerdings werden sie nicht in den index.xml gespeichert, sondern in der jeweiligen cache.xml.
Gehe ich richtig in der Annahme, dass Du hier die zum Cache passende xml-Datei (also z.B. GCxxxx.xml) meinst?
Ich habe das natürlich gleich mal ausprobieren müssen, und habe mal das Statusfeld geändert und die Dateien beobachtet. Ergebnis:
Nach der Änderung des Statusfeldes ändern sich die Dateien auf der Platte kein Stück. Erst wenn ich dann Speichern sage, wird die Information sowohl in die cache.xml als auch in die Index.xml geschrieben.

pfeffer schrieb:
Wenn man "Index neu erstellen" (oder so ähnlich) wählt, dann müssten auch die 'nicht gespeicherten Änderungen' sichtabr werden.
Hab ich auch probiert. Ich habe mal in die cache.xml-Datei mit einem Editor etwas im Statusfeld eingetragen und dann abgespeichert. Dann "Index neu erstellen". Ergebnis: Das leere Feld aus der Liste wurde dann in die cache.xml übernommen, so dass der Eintrag da wieder verschwunden ist.
Also so richtig koscher ist das hier noch nicht ;-)

Grüße,
Engywuck
 

Bilbowolf

Geowizard
Änderungen in der Liste werden nicht nur im Speicher vermerkt (und später in Datei index.xml), sondern parallel noch in eine Datei tmpidx.xml gespeichert.

Diese Idee finde ich gut. Aber dies sollten wir bitte erst nach der 1.0 angehen. Ich bin gerade dabei die Dokumentation fertigzuschreieben. Die 1.0 hat sich sowieso schon viel zu lange hinausgezögert (ja gut, ich bin schuld...)
 

pfeffer

Geowizard
Engywuck schrieb:
pfeffer schrieb:
Denn tatsächlich werden schon jetzt alle Informationen immer gespeichert (glaube ich jedenfalls). Allerdings werden sie nicht in den index.xml gespeichert, sondern in der jeweiligen cache.xml.
Gehe ich richtig in der Annahme, dass Du hier die zum Cache passende xml-Datei (also z.B. GCxxxx.xml) meinst? Ich habe das natürlich gleich mal ausprobieren müssen, und habe mal das Statusfeld geändert und die Dateien beobachtet. Ergebnis:
Nach der Änderung des Statusfeldes ändern sich die Dateien auf der Platte kein Stück. Erst wenn ich dann Speichern sage, wird die Information sowohl in die cache.xml
[/quote]
ja, die meinte ich. Es gibt da noch einen Zwischenspeicher, die cache.xml wird erst geschrieben, wenn der voll ist (d.h. wenn Du 51 Caches geändert hast) oder wenn Du CacheWolf beendest.

pfeffer schrieb:
Wenn man "Index neu erstellen" (oder so ähnlich) wählt, dann müssten auch die 'nicht gespeicherten Änderungen' sichtabr werden.
Hab ich auch probiert. Ich habe mal in die cache.xml-Datei mit einem Editor etwas im Statusfeld eingetragen und dann abgespeichert. Dann "Index neu erstellen". Ergebnis: Das leere Feld aus der Liste wurde dann in die cache.xml übernommen, so dass der Eintrag da wieder verschwunden ist.[/quote]

das hört sich mir nach einem Bug an.
Gruß,
Pfeffer.
 

salzkammergut

Geomaster
Engywuck schrieb:
Hab ich auch probiert. Ich habe mal in die cache.xml-Datei mit einem Editor etwas im Statusfeld eingetragen und dann abgespeichert. Dann "Index neu erstellen". Ergebnis: Das leere Feld aus der Liste wurde dann in die cache.xml übernommen, so dass der Eintrag da wieder verschwunden ist.
Also so richtig koscher ist das hier noch nicht ;-)
@Pfeffer: Das Verhalten wie von mir oben beschrieben hat mal so funktioniert. Jetzt wird aber tatsächlich die Kopie der Daten in der GC.....xml nicht richtig aktualisiert. Kann das was mit dem internen Cache (cachesWithLoadedDetails) für die CacheDetails zu tun haben? Kannst Du Dir das mal ansehen?

Danke, skg
 

pfeffer

Geowizard
ich habe mir das vor einiger Zeit angesehen und gefixt: Der Grund war die Einführung der Bildbeschreibungen von Dir (jedenfalls zumindest habe ich da einen Fehler entdeckt, der zum Nichtspeichern geführt hat). Ich bin mir nicht socher, ob ich dieses Problem damit auch gelöst habe. (bitte testen)

Gruß,
Pfeffer.
 
OP
Engywuck

Engywuck

Geowizard
Mit Revision 1308 funktionierts noch nicht. (Und seit dem sind keine relevanten Updates von Pfeffer hinzugekommen...)

Engywuck
 

pfeffer

Geowizard
danke für's testen. Habe Mit SVN 1323 ein Bugfix eingecheckt.
Er ist eigentlich unvollständig, weil dadurch die Datenbank inkonsistent werden kann, wenn man "Änderungen speichern?" mit "nein" beantwortet, dann wird die index.xml nicht gespeichert, wohl aber die geänderten <cache>.xmls.
Die geänderten <cache>.xmls müssen automatisch gespeichert werden, weil wir es im Moment so vorgesehen haben, dass nie mehr als 50 davon im RAM gehalten werden und wenn es mehr werden, sie automatisch gespeichert werden.
Das bedeutet, der einzige Ausweg aus der Inkonistenz ist: index.xml immer speichern und die Abfrage beseitigen.
1. Darf ich das so machen?

2. BTW: die Funktion "Index neu erstellen" erstellt nur für noch nicht im index vorhandene Caches den Index neu. Dieses Verhalten hätte ich so nicht erwartet. Ich finde, wir sollten es auswählbar machen, ob der index komplett neu erstellt werden soll, oder ob nur die neuen <cache>.xml dem index hinzugefügt werden sollen.

Gruß,
Pfeffer.
 

MiK

Geoguru
Was ich bei "Index neu erstellen" auch seltsam finde: Wenn man cache.xml-Dateien gelöscht hat, werden sie dadurch nicht aus dem Index entfernt.
 

2cachefix

Geomaster
Warum unterscheidet man überhaupt bei "Index neu erstellen" ob der Index komplett oder nur teilweise neu erstellt werden soll. Diese Funktion sollte doch nur zur Sicherheit falls die existierende mal kaputt geht genutzt werden. Ich wüsste sonst keine Notwendigkeit sie ausführen zu müssen. Beim Improtieren, Kopieren und Löschen von Caches innerhalb CW wir die Index.xml automatisch aktualisiert.
 

pfeffer

Geowizard
ich habe es zugegebenermaßen noch nicht auf dem PDA probiert, aber ich vermute, dass das komplette neuerstellen lange dauert.
Man kann die Funktion auch regulär nutzen: Man sipdert von GC oder lädt von OC neue Daten auf dem PC. Danach kopiert man mittels eines synchronisierungstools die neuen und geänderten <cache>.xml auf den PDA und führt dort "index neu erstellen" durch. In diesem Fall müssen nur diejenigen .xml neu eingelesen werden, die neu sind - aber hmm - es können sich auch welche geändert haben ---> vielleicht ist immer komplett neuerstellen doch besser?

Gruß,
Pfeffer.
 

2cachefix

Geomaster
ich lade zwar keine Caches von OC aber das geht auf dem PC doch auch mit CW. Dann ist die .xml immer aktuell. Danach kann man das Verzeichnis mittels Syncronisation auf den PDA laden. Dann ist auch hier kein Neuerstellen der Index.xml notwendig.
 

pfeffer

Geowizard
Mit Opencaching hat es nichts im Speziellen zu tun.
Es geht darum, dass ich bei Cachen Änderungen in der Datenbank vornehme (z.B. Addis eintrage) und quasi gleichzeitig am PC durch download von Opencaching (oder von mir aus durch spider von Goecaching.com).
Dann kann ich einfach die jeweils neueren <cache>.xml (=synchronisation in meinem Sinn) mit einem File-Sync-Tool auf den jeweils anderen Rechner übertragen. Danach muss der Index neu erstellt werden.

was heißt bei Dir "mittels synchronisation"?

Gruß,
Pfeffer.
 
OP
Engywuck

Engywuck

Geowizard
pfeffer schrieb:
Das bedeutet, der einzige Ausweg aus der Inkonistenz ist: index.xml immer speichern und die Abfrage beseitigen.
1. Darf ich das so machen?
Der einzige Ausweg - pah! ;-) Probleme sind nur Ansätze für Lösungen ;-)
Meine Lösung in diesem Fall:
Wird eine <cache>.xml geschrieben mit Daten, die auch in index.xml vorgehalten werden (und deshalb zu Inkonsistenzen führen können): Der betreffende Cache bekommt im Memory einen Merker, dass hier eine Inkonsistenz zwischen index.xml und <cache>.xml vorliegt. Entscheidet sich die Anwenderin beim Verlassen für "Speichern", so löst das die Inkonsistenz und nichts muss passieren. Entscheidet sie sich für "Nicht Speichern", so müssen die Daten der im Memory markierten Caches aus index.xml geladen werden und in <cache>.xml abgespeichert werden. Ist vielleicht auch nicht das schnellste, vermeidet aber die Inkonsistenzen.
Bleibt das Problem: Was tun, wenn der CW abstürzt? Dafür hab ich ja schon weiter oben eine Idee gepostet (Stichwort: dirty.xml).

pfeffer schrieb:
2. BTW: die Funktion "Index neu erstellen" erstellt nur für noch nicht im index vorhandene Caches den Index neu. Dieses Verhalten hätte ich so nicht erwartet. Ich finde, wir sollten es auswählbar machen, ob der index komplett neu erstellt werden soll, oder ob nur die neuen <cache>.xml dem index hinzugefügt werden sollen.
Wenn man die Quellen für Inkonsistenzen beseitigt, dann hat eigentlich nur noch Anwendung 2 einen praktischen Nutzen.

Gruß,
Engywuck
 
Oben