Autor Thema: object has been removed or recycled  (Gelesen 5676 mal)

Offline exratt

  • Frischling
  • *
  • Beiträge: 13
object has been removed or recycled
« am: 11.09.06 - 16:48:00 »
hi :)

ich hab da ein problem mit der domino java-api. ich erstelle im hauptprogramm ein fenster mit einem jtree, mit dessen hilfe ich die databases, darunter die views und darunter wiederum die documents anzeigen will. dem tree übergebe ich dabei das session-objekt. er wird aber nicht gleich komplett aufgebaut, sondern es wird immer erst die nächste ebene geladen, wenn man einen teil aufklappt. dadurch wird ein event ausgelöst und eine funktion explore() im jeweiligen treenode aufgerufen. dort bekomme ich folgenden fehler:

Code
NotesException: Object has been removed or recycled
	at lotus.domino.local.NotesBase.CheckObject(Unknown Source)
	at lotus.domino.local.Database.getViews(Unknown Source)
	at test.DatabaseNode.explore(DatabaseNode.java:76)
	at test.DominoTree.treeExpanded(DominoTree.java:47)
	at javax.swing.JTree.fireTreeExpanded(Unknown Source)
	at javax.swing.JTree.setExpandedState(Unknown Source)
	at javax.swing.JTree.expandPath(Unknown Source)
	at javax.swing.plaf.basic.BasicTreeUI.toggleExpandState(Unknown Source)
	at javax.swing.plaf.basic.BasicTreeUI.handleExpandControlClick(Unknown Source)
...

das problem scheint mir, dass der notes-thread nicht mehr gültig ist und das database-objekt somit keine gültigkeit mehr hat. wie komme ich nun an dieses objekt heran, ohne wieder von vorn alles aufzurollen (session erzeugen und über diese die datenbank holen)? das problem ist ja auch, dass ich in dem fall gar nicht weiß, welche datenbank ich da geöffnet habe...

der vollständigkeit halber nochmal die explore-funktion innerhalb meiner DatabaseNode-Klasse:

Code
	public void explore()
	{
		if ( !isExplored() )
		{
			Database database = getDatabase();

			try
			{
				// folgende zeile erzeugt den fehler
				Iterator<View> views = database.getViews().iterator();
				while ( views.hasNext() )
					add( new ViewNode( views.next() ) );

				explored = true;
			}
			catch ( NotesException exc )
			{
				exc.printStackTrace();
			}
		}
	}

ist das problem relativ einfach zu lösen? oder wäre es vielleicht doch besser, wenn ich mir ein gutes buch zu dem thema hole und ein wenig schmökere... mit domingo hab ich auch schon ein wenig rumgespielt, aber leider bietet es nicht alle funktionen wie die original-api, auf die ich nicht unbedingt verzichten will (z.b. alle datenbanken eines directories geben lassen).

ich hoffe, mein problem wurde verständlich. ich danke schonmal im vorraus für die hoffentlich erscheinende hilfe :) bis demnächst

Offline flaite

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.966
    • mein del.icio.us
Re: object has been removed or recycled
« Antwort #1 am: 11.09.06 - 17:13:38 »
Du solltest auf jeden Fall mit der Methode
NotesDatabase.isOpen()
abfragen können, ob das Objekt database brauchbar ist.
Wie sieht die Methode getDatabase() aus?
In der Methode könntest du Exceptions/Errors auf nicht mehr brauchbare Database-Objekte abfangen und dir entsprechend ein neues Database Objekt holen.

So ganz Blick ich da aber nicht durch.

Gruß Axel
Ich stimm nicht mit allen überein, aber mit vielen und sowieso unterhaltsam -> https://www.youtube.com/channel/UCr9qCdqXLm2SU0BIs6d_68Q

---

Aquí no se respeta ni la ley de la selva.
(Hier respektiert man nicht einmal das Gesetz des Dschungels)

Nicanor Parra, San Fabian, Región del Bio Bio, República de Chile

Offline exratt

  • Frischling
  • *
  • Beiträge: 13
Re: object has been removed or recycled
« Antwort #2 am: 12.09.06 - 08:54:28 »
ok, kurz zur erklärung. ich habe einen jtree, in dem ich als wurzel ein directory hab, darunter die darin enthaltenen datenbanken, darunter die views und darunter wiederum die dazugehörigen dokumente. ich habe jetzt eigene treenode-klassen für jede dieser domino-objekte geschrieben. ein treenode hat normalerweise eine methode getUserObject(), die das objekt zurückliefert, welches der knoten anzeigen soll. ich speichere in dem oben angegebenen fall mein database-objekt im userobjekt und rufe in der methode getDatabase() lediglich getUserObject() auf und caste entsprechend auf Database.

das ganze ist aber nur ein beispiel und tritt bei mir auch nicht das erste mal auf, in den anderen fällen hab ich das dann aber einfach anders geregelt (aka alles in der selben klasse gemacht), so dass ich keine probleme bekommen hab. anfangs wollte ich ein eigenes treemodel schreiben und wie gesagt, das gleiche problem trat dort auch auf.

prinzipiell könnte ich in dem fall zwar sicher prüfen, ob die datenbank gültig ist, aber kann ich denn auch, wenn sie es nicht ist, noch einige daten abfragen? denn wenn ich nicht weiß, welche datenbank das ist, kann ich auch kein neues objekt davon erstellen... nunja, ich werd mal ein wenig rumprobieren.

edit: schon am isOpen() scheitert das programm mit selbiger fehlermeldung... sieht also so aus, als wenn ich gar nicht da ran komme und somit kann ich es auch nicht neu erstellen. es muss ne möglichkeit geben, an das objekt ranzukommen, denn defacto existiert es ja noch (nur halt evtl innem anderen notesthread oder so). wenn nicht, tjo, dann ist das reichlich daneben...

edit2: ich muss wohl den startthread irgendwie am leben erhalten, wenn childthreads unterwegs sind. bei eventhandling ist das offenbar der fall. bis eben hab ich nicht darüber nachgedacht, dass meine main-methode nach erstellung und anzeige meines frames weiterläuft und nicht blockiert :D so dass dann auch gleich wieder der notesthread terminiert wird, was ja nicht ganz im sinne des programms ist. ich wer also mal weiter rumprobieren ;)

edit3: hab sinitthread jetzt im frame constructor gemacht und stermthread in windowClosed. allerdings wird das ja über eventhandling aufgerufen und somit fürchte ich, dass das quark ist, da das wieder ein eigener thread sein sollte :[
dennoch tritt der fehler nicht mehr auf. musste allerdings in den methoden, in denen ich mit dem datenbankobjekt arbeite, wieder ein init- und termthread machen, da es sonst andere fehler gibt. irgendwie find ich die api unnötig kompliziert... zu schade, dass domingo nicht ganz die funktionalität hat, sonst wäre das ganze evtl einiges einfacher...

auf jeden fall scheint es jetzt zu klappen, ich kann am tree rumspielen ohne fehler und mit erwartetem ergebnis, ist ne tolle sache :)

ich werd mich sicher nochmal melden, wenn ich weitere probleme mit der api habe oder so ;) und nichts desto trotz darfst du hier auch noch was schreiben, wenn du was anmerken willst, auch wenn es zu funzen scheint. danke dir ^^
« Letzte Änderung: 12.09.06 - 11:29:05 von exratt »

Offline flaite

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.966
    • mein del.icio.us
Re: object has been removed or recycled
« Antwort #3 am: 12.09.06 - 15:09:48 »
danke für den spannenden Bericht  ;D
zu edit3: Ich persönlich schrecke sehr davor zurück, sessions unnötig lange zwischen sinit und sterm zu halten. Aber für manche Aufgaben geht es halt nicht anders.
Theoretisch könntest du dir auch bei jeder Node die entsprechenden Childs für deinen Tree mit einer frischen session holen. Das kostet zwar Performance (und zwar viel), würd aber diese Architektur ziemlich lange diskursiv verteidigen. Normalerweise soll man sessions mit Datasources immer kurz offenhalten. Aber es gibt sicher auch Ausnahemn.
Warum du einen zweiten sinit-sterm Zyklus auf dem ersten braucht, weiss ich allerdings auch nicht.

Sofern du das auf anderen Rechnern deployen willst...
Ich schätze, dass 85% der User nicht ihr aktuelles Domino Programm Verzeichnis als erstes in ihrem OS-Path stehen haben. Oft ist Domino gar nicht im Path oder eine obskure Zusatzinstallation, die da irgendwann mal aus dunklen Gründen installiert wurde.
Schreib an mögliche Anwender auf jeden Fall gut sichtbar eine Info dazu und überleg dir ein dem Anwender angemessenes Vorgehen für den schnellen Support.

Gruß Axel
Ich stimm nicht mit allen überein, aber mit vielen und sowieso unterhaltsam -> https://www.youtube.com/channel/UCr9qCdqXLm2SU0BIs6d_68Q

---

Aquí no se respeta ni la ley de la selva.
(Hier respektiert man nicht einmal das Gesetz des Dschungels)

Nicanor Parra, San Fabian, Región del Bio Bio, República de Chile

Offline exratt

  • Frischling
  • *
  • Beiträge: 13
Re: object has been removed or recycled
« Antwort #4 am: 18.09.06 - 08:47:28 »
so, jetzt hab ich neue fragen :) könnt zwar auch einen neuen thread aufmachen, aber da es sich um das selbe "projekt" handelt, hau ich das mal hier rein.

zum einen eine kleine rechte-sache: ich bin manager auf einer datenbank (habe das so abgefragt). aber wenn diese datenbank in einem extra thread verwendet wird (event-handling, mit NotesThread.sinitThread() neuer thread eingeleitet), dann habe ich plötzlich keinen zugriff mehr. ich bekomme die datenbank zwar grundsätzlich noch angezeigt mitsamt inhalten, aber wenn ich mein recht über das acl abfrage, habe ich grundsätzlich NOACCESS. das ist doof...

nächstes problem: in der hilfe steht, dass man für remote-calls nicht extra sinitThread etc. aufrufen muss, sondern dass es ohne thread geht, da die eigentlichen operationen auf dem server ausgeführt werden. nun habe ich aber das problem, dass ich einen "NotesException: Object no longer exists on server" Fehler bekomme, wenn im Event-Handling-Thread auf das objekt zugegriffen werden soll. irgendwie auch doof ;)

edit: ich spiele mit dem gedanken, mir mal ein buch zu dem thema zu kaufen, in dem es vielleicht etwas ausführlicher oder klarer erklärt wird, als in der hilfe oder doku. kannst du mir evtl empfehlungen geben oder von büchern abraten? ihr habt zwar einige literaturvorschläge im forum, aber da ich nicht 5 bücher kaufen will, wäre eine einschränkung gut... dann gibt es wohl noch nicht allzu lang das buch Java unter Lotus Domino von Thomas Erkert, zu dem du auch das Inhaltsverzeichnis sehen kannst. vielleicht kennst du das buch ja und kannst sagen, ob es sich lohnt oder so?
« Letzte Änderung: 18.09.06 - 08:51:50 von exratt »

Offline flaite

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.966
    • mein del.icio.us
Re: object has been removed or recycled
« Antwort #5 am: 18.09.06 - 13:45:35 »
Hi,

das Problem muß irgendwo anders liegen. Ich vermute auch, dass bei Frage 1) eine Abfrage db.isOpen() auf das entsprechende Datenbankobjekt false zurückgibt.
Die Notes Java Api ist da an vielen Stellen nicht besonders transparent. Das Interface wurde irgendwann 1998 designed. Heute würden da viele Sachen klarer gemacht. 

In dem Scope, in dem du versuchst auf das Datenbankobjekt zuzugreifen, ist es (aus irgendwelchen Gründen) nicht referenziert.
Sieht für mich fast so aus, dass du irgendwo eine lokale Variable benutzt hast, wo du glaubst eine Instanzvariable zu benutzen.

Kommt z.B. so zuStande:

private Database myDatabase;

Code
public void setDb (Database myDatabase) {
 myDatabase = myDatabase; 
}
stattdessen:
Code
public void setDb (Database myDatabase) {
 this.myDatabase = myDatabase; 
}

ODER UND WESENTLICH WAHRSCHEINLICHER: wenn du das gleiche DB Objekt benutzen willst, muß das Session Objekt, mit der das ursprüngliche DB Objekt geholt worden ist bei weiteren calls auch benutzt werden. 

Ich bin mir ziemlich sicher, dass deine Probleme von Remote-calls und local calls die gleiche Ursache haben, auch wenn sie sich unterschiedlich manifestieren.
Ich glaub sogar, dass dein Problem eigentlich die gleichen Ursachen hat wie die "stateless-not-enough" von Gavin King gegen Spring, aber das krieg ich nicht so nebenbei erklärt.

IMNSHO scheinen die Probleme daringehend begründet zu sein, dass dir der Lebenszyklus der von dir verwendeten Objekte nicht wirklich klar ist.


Ich glaub das Buch ist gut, kenne es aber nicht. 50 Euro für ein Buch, dass sich nur mit einer Api beschäftigt, finde ich viel Geld.

Gruß Axel
« Letzte Änderung: 18.09.06 - 13:48:55 von Axel Janssen »
Ich stimm nicht mit allen überein, aber mit vielen und sowieso unterhaltsam -> https://www.youtube.com/channel/UCr9qCdqXLm2SU0BIs6d_68Q

---

Aquí no se respeta ni la ley de la selva.
(Hier respektiert man nicht einmal das Gesetz des Dschungels)

Nicanor Parra, San Fabian, Región del Bio Bio, República de Chile

Offline Ralf_M_Petter

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.879
  • Geschlecht: Männlich
  • Jeder ist seines eigenen Glückes Schmied
    • Ralf's Blog
Re: object has been removed or recycled
« Antwort #6 am: 18.09.06 - 13:50:29 »
Hallo Exratt!

Meiner Meinung nach kann dein Code nicht funktionieren, da du kein NotesThread.sinit() in deinem Code hast. Wo initialisierst du denn den Event Handler Thread?

Bei neueren Programmen von mir bin ich übrigens ganz davon weggegangen, im Event Handler Thread Zugriffe auf das Domino API zu machen, da dass einfach zuviele Probleme macht. Die Zugriffe auf Domino mache ich ausschliess in einem eigenen Thread, der dann die Ergebnisse mit InvokeLater wieder an den EventHandler Thread zurückgibt.

Grüße

Ralf
« Letzte Änderung: 18.09.06 - 13:52:13 von Ralf_M_Petter »
Jede Menge Tipps und Tricks zu IT Themen findet Ihr auf meinem Blog  Everything about IT  Eine wahre Schatzkiste sind aber sicher die Beiträge zu meinem Lieblingsthema Tipps und Tricks zu IBM Notes/Domino Schaut doch einfach mal rein.

Offline exratt

  • Frischling
  • *
  • Beiträge: 13
Re: object has been removed or recycled
« Antwort #7 am: 18.09.06 - 14:12:50 »
danke für die zahlreichen antworten :)

Ich vermute auch, dass bei Frage 1) eine Abfrage db.isOpen() auf das entsprechende Datenbankobjekt false zurückgibt.
richtig vermutet. beim anschließenden db.open() bekomm ich die exception.

ODER UND WESENTLICH WAHRSCHEINLICHER: wenn du das gleiche DB Objekt benutzen willst, muß das Session Objekt, mit der das ursprüngliche DB Objekt geholt worden ist bei weiteren calls auch benutzt werden.
die weiteren calls mache ich aber direkt auf dem database-objekt. die session interessiert mich in dem fall ja gar nicht, da ich weder eine neue eröffne, noch mir die alte geben lasse.

IMNSHO scheinen die Probleme daringehend begründet zu sein, dass dir der Lebenszyklus der von dir verwendeten Objekte nicht wirklich klar ist.
gut möglich. daher die idee mit dem buch ;)

Meiner Meinung nach kann dein Code nicht funktionieren, da du kein NotesThread.sinit() in deinem Code hast. Wo initialisierst du denn den Event Handler Thread?
ich habe kein NotesThread.sinit(), da es bei remote-calls über corba laut hilfe nicht nötig ist.

Zitat
An application that makes remote calls does not use the NotesThread class.

Bei neueren Programmen von mir bin ich übrigens ganz davon weggegangen, im Event Handler Thread Zugriffe auf das Domino API zu machen, da dass einfach zuviele Probleme macht. Die Zugriffe auf Domino mache ich ausschliess in einem eigenen Thread, der dann die Ergebnisse mit InvokeLater wieder an den EventHandler Thread zurückgibt.
uhm. klingt interessant. hab mich aber noch nicht eingehend mit threads beschäftigt, so dass mir das invokelater auch nicht ganz geläufig ist. hab das irgendwann letztens zum ersten mal gelesen ;) evtl kannst du mir ja ein kleines beispiel reinhauen, aber unabhängig davon kann ich mich ja mal informieren.


zum verständnis nochmal kurz eine erläuterung, was genau mein test-programm macht (bastel nämlich erstmal nur rum, um mich mit der api vertraut zu machen und schon einigen problemen zu begegnen, damit ich im richtigen einsatz dann besser vorran komme):
ich habe eine art browser, der mir informationen zu allen datenbanken anzeigt. links habe ich einen jtree, wurzel ist ein dbdirectory, darunter alle darin enthaltene datenbanken, darunter die views und darunter dann die dokumente. rechts neben dem baum sieht man dann informationen zum jeweils angeklickten element. da es ewig dauert (5-10 minuten), den baum beim initialisieren gleich komplett zu füllen, mache ich das dynamisch, wenn ein node expandiert wird. jeder node speichert sein eigenes objekt (also ein databasenode eben das database-objekt) und bastelt sich, wenn ein TreeExpansionEvent auftritt, die kindelemente selber zusammen, indem es auf das userobjekt zurückgreift. genauso bekommt auch das info-panel dieses userobjekt, wenn es informationen darüber anzeigen soll. immer dann knallt es eben, weil event-handling in einem eigenen thread ist und der das objekt nicht kennen will oder so...

Offline Ralf_M_Petter

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.879
  • Geschlecht: Männlich
  • Jeder ist seines eigenen Glückes Schmied
    • Ralf's Blog
Re: object has been removed or recycled
« Antwort #8 am: 18.09.06 - 14:23:31 »
Hallo exratt!

Habe jetzt deine Postinges nochmal gelesen und in deinem 2. Posting schreibst du dass du im Constructor des Frames ein sinitThread machst. Daraus habe ich geschlossen du verwendest den lokalen Zugriff.

Grundsätzlich: Bitte Schreibe ohne fundiertes Wissen über Threading keine Swing Programme. Leider programmieren sehr viele Leute Swing Programme ohne das Konzept von Threads verstanden zu haben. Daraus resultiert der schlechte Ruf (Performance) von Swing Programmen.

Eines Noch: Niemals ich wiederhole Niemals von einem anderen Thread als der Eventhandler Thread auf ein Swing Objekt zugreifen. Zu dieser Regel gab es früher Ausnahmen mittlerweile aber nicht mehr. Wenn man Mainpulationen aus anderen Threads machen will ist immer InvokeLater zu verwenden!!!!!!

Grüße

Ralf
Jede Menge Tipps und Tricks zu IT Themen findet Ihr auf meinem Blog  Everything about IT  Eine wahre Schatzkiste sind aber sicher die Beiträge zu meinem Lieblingsthema Tipps und Tricks zu IBM Notes/Domino Schaut doch einfach mal rein.

Offline exratt

  • Frischling
  • *
  • Beiträge: 13
Re: object has been removed or recycled
« Antwort #9 am: 18.09.06 - 14:39:00 »
ja, anfangs hatte ich ein ähnliches problem mit den lokalen zugriffen. letztendlich (und mit einsatz von sinitThread und stermThread) hat es aber geklappt und ich wollte das gleiche programm mit remote-calls ausprobieren (habe in dem fall die notes-thread-geschichten rausgenommen).

jedenfalls werd ich mir nun erstmal ein paar sachen zu swing und threads anlesen, hab zwar schon vor jahren swing-kram gebastelt, aber nicht gewusst, dass man da aufpassen muss (mal abgesehen davon, dass man immer liest, swing sei nicht thread-sicher, aber das hängt bestimmt damit zusammen)

Offline flaite

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.966
    • mein del.icio.us
Re: object has been removed or recycled
« Antwort #10 am: 19.09.06 - 07:57:21 »
imho bringt es schon was, wenn für GUI Programmierung ein paar Dinge erahnt werden:
Dazu gehören die leicht speziellen Threading Regeln, das observer pattern, Data Binding und natürlich die Trennung von Darstellungs-Logik, Business-Logik und Integrations-Logik.
Das alles hilft übrigens auch für swt/jface und sicher auch einiger nicht-Java Gui Frameworks.
Ich mag dieses Buch hier:
http://jroller.com/page/scottdelap
das Threading Kapitel gibt es sogar umsonst: http://today.java.net/pub/a/today/2005/04/19/desktoplive.html
und diesen Blog:
http://www.clientjava.com/blog

Gruß Axel
« Letzte Änderung: 19.09.06 - 09:05:27 von Axel Janssen »
Ich stimm nicht mit allen überein, aber mit vielen und sowieso unterhaltsam -> https://www.youtube.com/channel/UCr9qCdqXLm2SU0BIs6d_68Q

---

Aquí no se respeta ni la ley de la selva.
(Hier respektiert man nicht einmal das Gesetz des Dschungels)

Nicanor Parra, San Fabian, Región del Bio Bio, República de Chile

Offline exratt

  • Frischling
  • *
  • Beiträge: 13
Re: object has been removed or recycled
« Antwort #11 am: 19.09.06 - 13:43:29 »
hab mich jetzt mal zum thema threads in swing schlau gemacht. danke für den hinweis ;)

nun zu meinem problem von gestern: ich hab letzte woche noch ein bisschen recycling eingebaut. hab mich gefreut, dass ich nu auch in schleifen recycle (indem ich eine temporäre referenz mache, bevor ich z.b. getNextDatabase() aufrufe und diese dann recycle). nur zu blöd, dass das recycling an der stelle völlig schwachsinnig war, da ich die objekte an anderer stelle weiterverwendet habe... ich hoffe, das ist einer von den fehlern, von denen man lernt. zuviel recycling ist dann wohl doch nicht gut :D

das andere problem, nämlich dass die rechte, die ich auf einer datenbank habe, plötzlich weg zu sein scheinen, ist aber noch präsent. da werd ich mal noch ein wenig rumprobieren...

Offline flaite

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.966
    • mein del.icio.us
Re: object has been removed or recycled
« Antwort #12 am: 20.09.06 - 08:02:04 »
hab mich jetzt mal zum thema threads in swing schlau gemacht. danke für den hinweis ;)
In SWT und Eclipse plug-in Programmierung gibts sehr ähnliche Sachen.
nun zu meinem problem von gestern: ich hab letzte woche noch ein bisschen recycling eingebaut. hab mich gefreut, dass ich nu auch in schleifen recycle (indem ich eine temporäre referenz mache, bevor ich z.b. getNextDatabase() aufrufe und diese dann recycle). nur zu blöd, dass das recycling an der stelle völlig schwachsinnig war, da ich die objekte an anderer stelle weiterverwendet habe... ich hoffe, das ist einer von den fehlern, von denen man lernt. zuviel recycling ist dann wohl doch nicht gut :D
Mehr ist nicht unbedingt besser. Ich werd in den nächsten Wochen eine Art leichtgewichtiges Framework für den Zugriff auf Domino openSource rausgeben (klein). Ich bin jetzt auch wieder über viele Sachen gestolpert. Ich lös das jetzt mit einem eigenen Mini-Framework, das eigentlich funktioniert. Da werden aber keine Sessions über mehrere Client - Server Requests gecached. Kann aber bei Bedarf noch eingebaut werden. Ich hab bei der Anwendung, in der ich das nutze keine hohen Anforderung an geringe Latenzzeiten (Performance), da das bei der Anwendung nicht so wichtig ist.
Ich werd das dann irgendwann zur Diskussion stellen. Kann auch erweitert werden (z.B. das sessions über mehrere Request-Response Zyklen gecached werden). 
Zitat
das andere problem, nämlich dass die rechte, die ich auf einer datenbank habe, plötzlich weg zu sein scheinen, ist aber noch präsent. da werd ich mal noch ein wenig rumprobieren...
... das ist sicher kein vollgültiges Notes-Database-Objekt. Versuche db.isOpen().

Gruß Axel
Ich stimm nicht mit allen überein, aber mit vielen und sowieso unterhaltsam -> https://www.youtube.com/channel/UCr9qCdqXLm2SU0BIs6d_68Q

---

Aquí no se respeta ni la ley de la selva.
(Hier respektiert man nicht einmal das Gesetz des Dschungels)

Nicanor Parra, San Fabian, Región del Bio Bio, República de Chile

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz