Release 7

Zeitrahmen: 31. Jan. 2008
  • Mit dieser Release soll der VME-Rahmen KE3CG08 auf PPC-GuP umgestellt und in Betrieb genommen werden.

Prioritäten:
  • 1 - Ist Teil der Release 7.
  • 2 - Wird mit der folgenden Release fertig.
  • 3 - Postponed.

Beim Implementieren bitte wieder die Merkliste und die Windows-Merkliste beachten!

Umfang

Auf ergänzende Bemerkung wird mit MOVED TO... hingewiesen. Das Icon ist klickbar.
Erledigte Punkte sind mit DONE gekennzeichnet.

Nr. Name Prio Tage Projekt MOVED TO... DONE
1       Property-Beschreibung mit XML und Code-Generierung    
1.1 KHoe 1   Adapter für Elementzugriff via Elementnamen   DONE
1.3 LH 1   Erweiterung des Konstruktors der Klasse Usr um einen Parameter, der die Kennzeichnung als kritische Property erlaubt.   DONE
1.3.1 LH 1   Vorschlag für Erweiterung der Klasse Usr.   DONE
1.3.2 LH 1   Implementierung der Erweiterung der Klasse Usr.   DONE
1.3.3 LH 1   Vorschlag für neue Methode der Klasse Usr zum nachträglichen Einschränken des Zugriffsrechts.   DONE
1.3.4 LH 1   Default-Property PROPDESC um Property-Access-Parameter erweitern.   DONE
1.4 KHoe 1   Erweiterung der XML-Property-Beschreibung.   DONE
1.5 KHoe 1   XSD- und XSLT-Dateien kommen zum Projekt uti und werden beim Make nach $uti kopiert.   DONE
1.8 KHoe 1   USR-Adapter: Parameter-Check auf para.size() > max.   DONE
2       Umstellung von Geräte-Software auf V09 mit XML-Beschreibung    
2.1 KHer 1   DI: USRs und EQMs   DONE
2.2 NN 1   DF: USRs und EQMs. Entfällt, Gerätemodell wird nicht mehr gebraucht.   DONE
2.3 LH 1   DGX: USRs und EQMs   DONE
2.4 Kain 1   Erweiterungen im Device-Implementation-Interface, damit eine USR auf den DPR-Bereich eines anderen Gerätes zugreifen kann.   DONE
2.6 LH 1   Default-USR EQMError bleibt, NODAL-Programm anpassen.   DONE
3       Devman    
3.1 KHoe 1   Persistant IORs: Endpoint implementiert.   DONE
3.2 KHoe 1   Automatisches generieren der Dateien devman-version-*.hh   DONE
3.3 Kain 1   Mehrfaches Linken von z.B. vmedevice.so.x.y.z abfangen MOVED TO... DONE
3.4 LH 2   Script zum Freigeben des Devman, reldevman. erstellen MOVED TO... DONE
3.5 SMa 1   GSI-eigenen Nameservice benutzen   DONE
3.6 SMa 2   GSI-eigenen Nameservice inklusive Access Rights benutzen   DONE
3.7 SMa 1   DevMan akzeptiert Option -c fuer die Auswahl des Nameservers (-c für CORBA) (s. 4.9))   DONE
3.8 SMa 1   DevMan akzeptiert Option -s servername fuer Suche des Nameservers   DONE
3.9 SMa 1   3.8 wurde gestrichen und durch Umgebungsvariablen ersetzt: zum Debuggen lokal die Umgebungsvariable NA_SERV_PORT auf eine andere Portnummer setzen (nicht 52315) setzen   DONE
3.10 LH 1   'Tagging' aller Quellen im Repository nach Tests Mitte/Ende Februar.   DONE
4       Nameservice and Access Rights    
4.1 SMa 1   GSI-eigener Nameserver   DONE
4.3 SMa 1   Austragen der Devices aus Nameservice im Destruktor des Devman   DONE
4.4 SMa 1   Klären, ob man statt TCP/IP besser via CORBA kommuniziert. MOVED TO... DONE
4.6 UK 1   Client-API für Java: Erste Version funktionsfähig   DONE
4.7 UK 1   Client-API für Python im Modul devacc   DONE
4.7a UK 2   Client-API für Python: Integration in Makefiles   DONE
4.8 KHoe 1   Nameserver per service GSInameserver startbar MOVED TO... DONE
4.9 NN 2   Überlegen, wie Cosylab mit (neuem) Nameserver umgeht. MOVED TO... DONE
4.10 SMa 1   Aussagefähigere Namen für die beiden Nameserver-Dateien erfinden   DONE
4.11 LH 1   Neue Methoden limitPropertyAccess() für Usr und UsrSet einbauen.   DONE
4.12 LH 2   CORBA-Nameserver aus (C++) Nameservice für Clients rausnehmen. MOVED TO... DONE
4.13 SMa 2   Nameservice sollte Verbindung zum GSI-Nameserver nicht permanent offen halten. Nach sinnvoller Timeoutzeit (5-10 sec) Verbindung schliessen. MOVED TO... DONE
4.17 SMa 1   Docu u.a. für die Rufbereitschaft vervollständigen.   DONE
5       Subscription-Service    
5.1 LH 1   ohne Timeout-Handling   DONE
5.2 LH 1   inklusive Timeout-Handling   DONE
5.5 LH 2   Eventkonnektierung inklusive Pulszentralenkennung. Im Subscription-Service-API drin, aber bisher ohne Funktion. MOVED TO... DONE
6       Userface MOVED TO...  
6.2 GSch 1   guckt nach (Linux-) Servern auf mehreren Hosts   DONE
6.3 GSch 1   entsprechende Operating-Programme mit Userface gelinkt MOVED TO... DONE
6.4 GSch 1   Prüfung MOPS-/DevMan-Gerät (mit cache) verfeinern   DONE
6.5 GSch 1   kein Exit bei Störungen der Kommunikation mit dem UFCServer, Neustart   DONE
6.6 GSch 2   Mitliefern des Username für Nameserver mit Access Rights MOVED TO... DONE
6.9 GSch 1   Versionskontrolle zwischen client und server   DONE
6.10 GSch 1   Docu u.a. für die Rufbereitschaft vervollständigen.   DONE
6.11 GSch 1   Exe des Produktions-UfcServers nach $libasl.   DONE
6.12 KHoe 1   xinetd: Produktions-UfcServer von $libasl starten.   DONE
7       KE3CG08 MOVED TO...  
7.1 LH 1   PPC-GuP und 5 SEs für KE3CG08 bereit stellen.   DONE
7.2 LH 1   Schnelles Ethernet für PPC-GuP bereit stellen. MOVED TO... DONE
7.3 LH 1   M68k-GuP, Eth, V08-SEs und Watchdog-Karte als Rückfallposition gut aufheben! Auch das 10MBit Ethernet darf nicht entsorgt werden!   DONE
7.4 LH 2   Terminalserverports (KE3CT01) mit KE3CG08-GuP und -SEs verbinden.   DONE
7.5 LH 1   Alle 5 SEs: Init des Therapiespeichers (EQM 210).   DONE
7.6 LH 1   Therapieteilnehmer zu MEDMEMBers erklären.   DONE
8       Kleinigkeiten    
8.1 Kain 1   AccDevFatalException parallel zu AccDevException erfinden   DONE
8.2 LH 1   Alle cerr-Outputs durch logmsg(LOG_DEBUG,...), alle cout-Outputs durch logmsg(LOG_INFO,...) ersetzen. MOVED TO... DONE
8.3 LH 1   alle .settings usw. mit ins SVN-Repository einchecken   DONE
8.4 LH 1   Klasse Device erweitern um Methode const String& nomen();   DONE
8.5 LH 1   Parallele für Property DEVDESC, die Userface konvertieren kann. DEVDESC2 mit Nomen, Eqmod, GuP- und SE-Name für Vme- und X86Device.   DONE
8.7 NN 1   Kleines Kochbuch erstellen (online), wie man rausbekommt, ob Devman, Nameserver und Ufc-Server laufen, wie man sie starten kann, wo ihre Logs zu finden sind usw. Braucht die Rufbereitschaft!   DONE
8.9 LH 1   Eine schnelle Möglichkeit finden, das exitNoSend() unter Device Access nachzubilden.   DONE
8.11 KHoe 2   Keine Log-Ausgaben des Devman usw. nach /var/log/messages.   DONE
9       eventuell zusätzlich noch    
9.5 Alle 2   Vorschlag für Bibliotheks-Directories (z.B. $libasl) im Produktionszweig $PROOT erarbeiten. MOVED TO... DONE
9.10 LH 2   Neues Projekt tests erstellen, das u.a. client.cc, subsvc-test.cc, das Python-Testprogram von Peter usw. enthält.   DONE
9.11 SMa 2   Dem Nameserver das Loglevel als Kommandozeilenparameter mitgeben   DONE

Bemerkungen

Ergänzende Bemerkungen, Hinweise usw. zu obiger Liste "Umfang".

Nr. Bemerkung
3.3 USR-Dateien (z.B. md.so) können mit verschiedenen vmedevice.so.x.y.z-Dateien gelinkt sein. Dann gibt es den VME-Bustreiber-Singleton zweimal und nur einer kann auf den VME-Bus zugreifen. Wie kann man das Vermeiden bzw. beim Laden der so-Dateien erkennen? Das Errorhandling in Devman/vme_std-Treiber wird so erweitert, dass der Devman beendet wird, wenn VME-Bus-Zugriffe nicht möglich sind. Bei "service devman [re]start" muss man dann ein "[FAILED]" bekommen.
3.4 * Tut bereits für VME, für ASL bedarf es noch der Klärung einiger Randbedingungen (cpu-spezifische Directories, Logfile-Directories, ...).
* Zur Zeit wird nur devman.so.1.2.3 freigegeben. Was mit den anderen Bibliotheken ist, z.B. accdata.so oder vmedevice.so, muss noch geklärt werden.
* Makefile.nigthly darf dann generierte shared objects nicht mehr einfach nach $libvme bzw. $libasl kopieren.
4.4 Wir bleiben bei TCP/IP
4.8 Nameserver soll zunächst auf asl711 laufen. Das Exe liegt auf $libasl. Perspektivisch soll der Server auf ausfallsicheren Rechnern laufen. Die Clients sollen dann den Ort des Servers vom DNS und aus /etc/services erfahren. Das erfordert nochmal eine Änderung des Nameservice-Codes!
4.9 Devman-Option -c benutzen, siehe 3.7.
4.12 Im Moment werden Geräte aus dem GSI-Nameserver wieder ausgetragen, aus dem CORBA-Nameserver aber nicht. Das schafft Verwirrung beim Userface. Entweder wird die Client-Nachfrage beim CORBA-Nameserver weggelassen, oder der Devman muss Geräte auch aus dem CORBA-Nameserver wieder austragen. Bedenken bei der Entscheidung: Cosylab sowie Access Rights.
4.13 Wird ein GSI-Nameserver gestoppt, wenn noch ein Client Verbindung zu ihm hat, ist ein folgender Restart nicht sofort möglich, weil der Port zum Client noch eine gewisse Zeit belegt ist. Entweder wird die Verbindung vom Client (in nameservice-gsi.cc?) nach einer Anfrage sofort wieder geschlossen, oder es wird ein Timer aufgesetzt, der nach einer bestimmten Zeit ohne weitere Aktivität zwischen Client und Server die Verbindung automatisch schließt.
5.5 Wenn in naher Zukunft jede SE ihr eigenes Timing empfangen kann (Einsatz der neuen VME-Crates), dann muss die Spezifizierung einer Eventkonnektierung auch die Pulszentralenkennung enthalten. Würde ein "-1", das für "PZ ist egal" stünde, Sinn machen? Wenn wir das einführen, bedarf es Änderungen bzw. Erweiterungen der Software
* im Subscription-Service,
* in den Klassen Device und AccDevice und
* auf der VME-Ebene.
6 Wenn das Multithreading auch unter VMS 8.3 klemmen sollte, Userface mit QIO statt Sockets realisieren.
6.3 Dabei wird zu prüfen sein, ob die Operating-Programme, die ja dazu mit dem Switch multithreaded kompiliert und gelinkt werden müssen, in ihrem Resourcenverbrauch unter VMS 8.3 wieder einigermaßen vertretbare Ausmaße annehmen. Auch auf die CPU-Auslastung auf den dann neuen Alphas muss geachtet werden. Sollten die Ergebnisse nicht zufriedenstellend sein, muss über Alternativen nachgedacht werden.
6.6 Fertig und getestet, aber noch nicht implementiert.
7 KE3CG08 ist der Ersatzrahmen für KUECG4D. Der UNILAC-Rahmen muss tatsächlich am 2. Jan. 2008 einsatzbereit sein! Das SIS geht, für Beschleunigertests, erst einen Monat später in Betrieb. Der eigentliche Betrieb beginnt Ende Februar.
7.2 Die Ports der Switsches müssen auf auto stehen. Dann handeln sowohl der alte Transceiver als auch das PPC-Board die passende Bandbreite aus. Es ist also nur ein Eth-Anschluss nötig.
8.2 Siehe Linux Man Pages für die verschiedenen Levels. Der Default-Loglevel auf den Linux-Maschinen muss also LOG_INFO sein!
9.5 Zum Beispiel würden unter $PROOT/asl/lib/v01 nur Produktions-Shared-Objects liegen, die explizit freigegeben wurden (siehe auch 3.4). Programme im täglichen Betrieb würden diese Shared-Objects benutzen und hätten keine (Kompatibilitäts-) Probleme mit upgedateten Shared-Objects auf $DROOT/lib/asl/v01.

Bugs

Nr. Name Prio Tage ProjektSorted ascending DONE
5.4 LH 1   accdata.hh: virtual aus Deklaration von type() rausnehmen DONE
5.5 LH 1   accdevice: Usr::read() wirft alle Exceptions, AccDevice::read() aber nur AccDevExceptions, ebenso alle anderen Methoden. DONE
5       Allgemein  
4.1 LH 1   Anwendung schmiert in shared_ptr.hh, Zeile 24 (++*_count;) mit Segmentaion Fault ab, anscheinend dann, wenn nach unsubscribe() noch Nachzügler kommen. (Nicht reproduzierbar.) DONE
5.1 LH 1   Beim Zugriff von 2 Clients auf die selbe Property eines Gerätes kommen zum Teil mehr Daten zurück als die USR verschickt. Tritt nicht mehr auf. Tests am 4.12.07. DONE
3.1 LH 1   Callbacks (konnektierte Aufträge) tun mit neuem Nameservice nicht mehr. DONE
5.8 Kain 2   Default-USR EQMERROR sollte nicht xErrIndex liefern, sondern die jeweilige size() des Puffers. DONE
1       Devman  
4.3 LH 2   Die Trigger-Eventstamp liefert TIF als Pulszentralen-ID, die Eventstamps der Einzelgeräte aber SWPZ, wenn man TL1MU1 (in KP1CS042) usw. subscribiert. Die SE hängt an der SWTIME3E. DONE
5.2 KHer 1   EC-Property DIAGNOSE liefert falsche Daten für den Eventpuffer. Siehe Menüpunkt 30 in NODAL comp_test. DONE
1.5 Kain 1   EcInfoPPC::getStatus() liefert falschen Gerätestatus. DONE
1.2 Kain 2   Event-Konnektierungen an einzelne VrtAccs (statt an alle) tun nicht DONE
1.1 Kain 2   Gerät online auf SE, aber offline beim GuP DONE
5.7 Kain 2   GuP trägt seine Knotennummer nicht bei den SEs ein. Nummer sollte aus den letzten beiden Bytes der IP-Adresse gebildet werden. DONE
4.2 LH 1   In Collector::insert() tut der Vergleich if (trgtime < _sentTime) nicht, wenn map.empty(), _sentTime = 23:55 und trgtime = 0:02 ist! DONE
3.3 SMa 1   In nameservice-gsi.cc die 2 Methoden createDeviceReference() nicht zweimal komplett implementieren. Evtl. mit default Parameter user. DONE
1.8 Kain 1   Keine Alarme von nicht-existenten SEs verschicken. DONE
1.3 Kain 1   Lockfile wird nicht immer gelöscht, z.B. wenn es beim Einlesen der DBS-Datei Probleme gibt. DONE
3.2 SMa 1   logmsg-Ausgaben, die Fehler berichten, immer mit LOG_ERR ausgeben, nicht mit LOG_DEBUG. (korrigiert in nsrvclient, nsrvtcpip und nameserver) DONE
2.1 KHoe 1   Makefile.nightly muss bei Compile-Fehlern sofort abbrechen. DONE
3       Nameservice  
5.10 UK 1   NODAL WAIT-T tut unter VMS 8.3 nicht. DONE
1.6 Kain 1   Nomenklaturen, die mit >> beginnen, z.B. >>RES42, sollen nicht als Objekte angelegt werden. DONE
1.4 Kain 2   Projekt 'cpu87': Fehlermeldungen macros.h: No such file or directory dito für global-types.h. DONE
2       Scripte  
4       Subscriptionservice  
1.7 Kain 1   VmeDevice::getStatus() liefert Returnstatus, aber RDefStatus<T>::read() wertet ihn nicht aus. Folge: User bekommt keinen Wert und keinen Fehler. DONE
Topic revision: r101 - 18 Aug 2011, UnknownUser
This site is powered by FoswikiCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding Foswiki? Send feedback