Planungen für kommende Releases

Prioritäten:

1 - Muss mit der aktuellen Release fertig werden, da dringend benötigt
2 - Soll mit der aktuellen Release fertig werden, aber (noch) nicht dringend
3 - Wünschenswert, da spürbare Erleichterung für Betrieb / Arbeit der Gruppe
4 - Ganz nett, nice to have
5 - Beruhigt irgendwen irgendwie, stört zumindest nicht
6 - Stört / behindert, besser gar nicht angehen

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

Ein IDEA! bedeutet, dass der Punkt einer klärenden Diskussion bedarf.
Auf ergänzende Bemerkung wird mit MOVED TO... hingewiesen. Das Icon ist klickbar.
Erledigte Punkte werden mit DONE gekennzeichnet.

Klären

Nr. Name Prio Projekt MOVED TO... DONE
1     Denken: Nameservice liefert Gerätemodell eines Gerätes sowie alle Geräte eines Gerätemodells. Besser via Operating-DB!    
2     Gerätemodell-Kennung (z.B. 'MX') in die Operating-DB integrieren. IDEA! Denken mit AP.    
3   3 Wie können/sollen Anwendungen auf Rechnern im allgemeinen GSI-Netz (z.B. HITRAP), die auf Beschleuniger-Geräte via 'Device Access'-Server im Acc-Netz zugreifen wollen, dies tun, wenn das Acc-Netz mal komplett abgeschottet sein wird?    
4   4 Strategie für Geräte-Reservierung entwerfen, entweder via Property oder via zusätzlicher Methode der Klasse Device.    
5 NN 3 Änderung einer Nomenklatur im DevMan ( TR1KY1 nach TR1KYA). Wie Nomenklatur in SE anpassen?    
6 LH 3 Für mutex zwischen GuP und SE wird ein echtes testAndSet() ( read-modify-write via VME-Bus) benötigt! Klären, wie das geht. Siehe auch meine Email Test-and-set unter PowerPC von LH vom 8. Aug. 08. Hinweis (UK, 11.Nov.10): bei PowerPC denkt man wohl eher an 'compare-and-swap' als atomarem Zugriff (realisiert über lwarx/stwcx), mit dem man nicht ein einzelnes Bit, sondern ein 32-Bit Bitmuster setzt.    
7 KHer, KHoe 3 Integration der mBox/microIOC-Entwicklung in die Devman-Entwicklungsumgebung.    
8 KHoe 3 Handhabung des Java-Codes (Device-Adapter): Wo in Subversion die Quellen unterbringen, wie .jars bauen, wie für User bereitstellen (welche directories), ...    
9 KHer, KHoe 2 Anpassungen für microCOS an M68k-Cross-Compiler auf 64Bit-Blades vornehmen?    
10 NN 2 Read-Properties: Die diversen Stamps (Time-, Event-, EFICD-) sind nur bei vielen Istwert-Properties versorgt, bei vielen Proeprties sind sie undefiniert. Wie dafür sorgen, dass sie zumindest einen definierten Wert haben? Automatismus im Konstruktur? Überall explizit nachrüsten??    

Bemerkungen

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

Nr. Bemerkung
-- zur Zeit keine Einträge

Umfang

Nr. Name Prio Tage Projekt MOVED TO... DONE
1       Geräte-Software V09    
1.1       readCommand() und writeCommand() unterbrechbar machen, so, wie es z.B. timedwait() und waitEvent() sind. MOVED TO...  
1.2 LH 4   Kochbuch zur Umstellung der USRs überarbeiten wg. "XML-Generierung" der USRs.    
1.3 KHoe     vmeconfig.py merkt sich Additional Files getrennt in V08 und V09.    
1.6 LH 2   Geräte-Software so taggen, dass V08 und V09 'kompatible' Versionen haben.    
1.7 Kain 3   Im Zuge der Einführung der 1970-Timestamp die Alignment-Anpassungen des SE-Therapiespeichers an V08 wieder rausnehmen.    
1.8 Kain 2   Funktion diffTimeIn10ms() in der EQM-Support-Lib zur Verfügung stellen.    
1.9 NN 2   Erste XML-Beschreibung der Properties, die LSA benötigt, für: BC, MB, ME, MK    
2       Devman, AccDevice    
2.1 NN 2   Sollwert-Änderungen protokollieren (jeder Schreib-/Call-Zugriff über eigenen log-message Kanal melden)    
2.2 KHer 2   Klassen EquInf und VmeDevice vereinigen.    
2.2.1 KHer 2   Klären, was davon von allgemeinem Interesse, z.B. für X86Device, ist.    
2.3 KHer 2   'DPR'-Alarmstruktur von Devman entkoppeln.    
2.5 Kain     Property SWRELOAD zum Reload der USRs eines Gerätemodells noch mal bedenken. MOVED TO...  
2.6 Kain 2   Notwendige Diagnose-Werkzeuge (sowas wie das MOPS-Display?) zusammenstellen und Prioritäten für ihre Realisierung vergeben. MOVED TO...  
2.6.2 Kain 2   SE-Konfiguration (vergl. MOPS-Display EC Configuration). MOVED TO...  
2.6.4 LH 3   Wie DMAN-USRs und NODAL comp_test aneinander anpassen?    
2.7 NN 2   Diverse Infos zur Funktion von DevMan etc (z.B. wieviel Lebenszeichen der SEs) verfügbar machen, per Property oder sonstwie (siehe Punkt 2.6).    
2.8 NN 4   GuP-Programm zur Unterstützung des SE-Tests bauen.    
3       Nameservice and Access Rights    
3.1 KHoe 3   Wie Nameserver ausfallsicher machen (Hotswap oder sowas)? MOVED TO... DONE
3.1.1 KHoe 3   Dazu Nameserver auf dediziertem Rechner (asl3xx oder Fileserver) laufen lassen (nicht auf asl7xx)?   DONE
4       Subscription-Service    
4.1 LH     Client-API für Java    
4.2 LH     Client-API für Python im Modul devacc    
4.4 NN     Kleines Online-Howto, das beschreibt, wie man in Python a) einfache konnektierte Aufträge hinbekommt und b) den Subscription-Service nutzt.    
5       ELDK    
6       Device Access Interface    
6.1 LH 2   IDL-Erweiterungen: 1. Neue Konnektierungsart für IPS. 2. Prozessname für asynchrone Aufträge. 3. 64Bit-Intergers UQuad und SQuad für Fesa-Gateway.    
6.2 KHoe, UK 3   Python-Modul devacc objektorientierter implementieren (meint was?).    
6.3       Client-Interface, Callback-Objekt der asynchr. Aufträge: CORBA-Servant explizit deaktivieren (belegt sonst für immer Speicher)    
7       Userface    
7.2 GSch 5   waitResponse() implementieren    
8       Versionsverwaltung, Releases, Produktionsbibliotheken    
9       Allgemeines    
9.1       UML-Diagramme, ... PICK  
9.2 UK 2   mxmd_coeff, mxmd_pol, für Linux portieren. Alle Fit- und Polaritätsdateien ins asl72x-Cluster kopieren.    
9.3 NN     Upgrade Subversion auf Version 1.5    
9.4 NN     DONE Bugzilla installieren    
9.4 NN     Bugzilla nutzen. Eventuell als Plug-in mit dem TWiki-Update.    
9.5 KHoe     Echtes nightly build (mit Bamboo?)    
9.6 NN     Makefiles so erweitern, dass Quellcode, der zusammen gehört, in einem Projekt untergebracht werden kann. MOVED TO...  
9.8 UK 3   NODAL LSTDM sollte auch mit neuem Nameserver (Wildcard-Suche!) zusammen arbeiten. MOVED TO...  
9.9   4   DONE TWiki-Update. Wolfgang S. fragen, ob Steffen das tun kann.    
9.10 Alle 3   Vorerst abgeschlossene Projekte vorstellen.    
9.10.1 LH 3   Subscription Service. IDEA! wann?    
9.10.2 GSch 3   Userface. IDEA! wann?    
9.13 NN 4   Umstieg auf Python 3.0. Siehe u.a. c't 5/2009, Seiten 198ff.    
9.14 KHoe 3   Python soll den Library-Path zum import von devacc automatisch kennen, ohne dass man den LD_LIBRARY_PATH explizit setzen muss.    
9.15   2   automatisierte (vollautomatische?) Tests, zumindest für Teile des Systems    

Bemerkungen

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

Nr. Bemerkung
1.1 Die Unterbrechbarkeit ist im Prinzip nötig bei asynchronen (request) und konnektierten (connect) Aufträgen, um den Client zeitnah via Callback::exit() vom Ende eines Auftrages (eines Threads) zu informieren.
2.5 Dabei dlopen(), dlsym(), dlclose(), das C++ dlopen mini HOWTO und den Artikel Dynamic Class Loading for C++ on Linux beachten. SWRELAOD wurde schon mal (vorläufig) beerdigt. Siehe auch noch mal die Email "Meeting DEVDESC, PROPDESC, DBRELOAD, SWRELOAD" vom 31.Aug.06.
2.6 Vorstellbar wäre, in AccDevice Protokoll- und Statistik-Informationen zu erzeugen und in einem zugänglichen Speicherbereich abzulegen (Überlegungen hierzu wurden schon mal in Interfaces für System-Eigenschaften festgehalten. Das könnte ein singleton -Objekt oder auch ein shared-memory sein. Zugänglich deshalb, damit man per dman -Properties oder ähnlichem drankommt. Ein shared-memory hätte noch den Charme, dass man sogar mit einem externen Programm (das zu Diagnosezwecken in einer Konsole gestartet werden kann) quasi in die aktuellen internas reinschauen kann.
2.7 Wünschenswert: Online-Display, wie früher beim MOPS - wenn geht, noch ausführlicher.
3.1 Server-Prozesse allgemein: Sicherstellen, dass Serverprozesse (Nameserver, UfcServer) immer laufen. Idee dazu: Einen cron-job starten, der regelmäßig nachsieht, ob die jeweiligen Services noch laufen, und sie gegebenenfalls neu startet. Was, wenn man sie, z.B. aus Debug-Gründen, mal wirklich nicht am Laufen haben möchte? Dann sollte einem der cron -Job nicht in die Quere kommen.
8.3.2 Die Directories sollten nach ihrer Erzeugung sauber sein und keine Dateien enthalten, die von anderen GuP-Directories kopiert wurden und nur dort sinnvoll sind. Und sie sollten dann nicht dem User root gehören.
9.1 Werkzeuge für UML-Diagramme gangbar machen und diese auch benutzen.
9.6 Z.B. der Nameservice besteht z.Zt aus 4 Projekten. Hintergrund ist, dass die derzeitigen Makefiles immer nur eine Bibliothek oder ein Executable aus einem Projekt erzeugen können.
9.8 Allerdings wird man Geräte, für die es (gerade) kein Objekt gibt, damit auch nicht sehen können. Entweder wurde das Objekt nicht erzeugt und damit auch kein Eintrag im Nameserver, oder das Objekt und damit auch der Eintrag im Nameserver wurden gelöscht.

Bugs and Feature Requests

Nr. Name Prio Tage Projekt DONE
1       Geräte-Software V09  
1.1 LH     Lädt man einen Boot-ECM V09, dann dauert das ziemlich lange, wenn die SE im Eventmode läuft und SIS- oder ESR-Timing hört. Das ecload schaltet wohl die SE nicht auf download ( INIT mit Parameter = 16)  
1.3 LH 2   Alle tags der V09-Geräte-Software müssen an die (letzte) Version unter V08 angepasst sein. Gab/gibt es also eine Version 08.11.07, dann sollte es nach der Umstellung auf V09 die tags 08.11.08 und 09.11.08 geben. Ist eine DPR-Änderung mit der Umstellung verbunden, dann muss es statt dessen die tags 08.12.00 und 09.12.00 geben.  
1.4 Kain     Wenn der Elektronik von DTI-Geräten der Rahmenpuls fehlt, wie z.B. öfter im Shutdown, dann rascheln die Geräte ziemlich mit Alarmen.
Ähnlices scheint es auch bei DGX zu geben. Auch hier wechseln sich die Messages DGX-E-NOTRIGGER und DGX-S-VORB_OK im selben Beschleuniger ab.
 
1.5 LH 3   Woran (z.B. an welcher Versionsnummer) kann ich erkennen, ob sich das Client-Interface eines Gerätemodells, also eine Property, geändert hat? Das wird wichtig, wenn aus den XML-Files Clients generisch erzeugt werden. Zur Zeit wird (von Raphael) für jede USR-Version xyz.so.09.01.07, xyz.so.09.01.08 usw. ein Interface generiert. In der SIS01DBS hat man Property-Änderungen am Gerätemodelnamen XYZ_01, XYZ_02 usw. erkannt.  
2       Devman  
2.1 Kain     Die vier Definitionen #define M_ERR_IND 0 bis define MAX_VRT_ACC 0 in dprdeverror.hh sind gefährlich. Das sollte man anders machen.  
2.2 LH 2   Für service devman restart von KE1CG01 mit vielen PLA-Geräten wurden am 23.Feb.09 insgesamt 4,5min benötigt. Das ist sehr lange. Beobachten, ob das an den Netzwerkarbeiten lag oder ob das der Standard ist. Dann müssen wir noch was tun!  
2.3 Kain, LH 3   Devman-Absturz in __old_sem_post. Siehe LHs Email Devman-Absturz in __old_sem_post vom 25.Feb.2009.  
2.4 LH 1   CONNDESC und REQDESC mit DMAN-USRs tut nicht. Es wird immer ein leeres AccData zurück geliefert. Es muss mindestends ein Element geliefert werden, das die Anzahl der Konnektierungen enthält. Keine Konnektierungen: Element = 0.  
2.5 LH 1   Devman auf Blades mit 64bit stürzt beim Beenden konnektierter Aufträge ab, egal ob mit explizitem disconnect oder ob selbst-beendent. Devman auf Blades mit 32bit und PPC-Devman tut (gleiche Quellen).  
3       ECM  
3.1 Kain 2   Geräteverwaltung im ECM: Wird ein Gerät erstmalig gefunden, so wird es in den Zustand DEV_KNONW gesetzt und der GuP per Interrupt informiert. Der MOPS oder DEVMAN trägt dann die Nomenklatur des Gerätes auf der SE ein und teilt dies dem ECM mit und damit wird das Gerät DEV_ONLINE . Geht dieser Interrupt verloren (oder ins Leere), was mit PowerPC leichter passieren kann als mit einem MOPS, der im EPROM läuft, dann kann das Gerät aus dem DEV_KNOWN -Zustand nicht mehr nach DEV_ONLINE wechseln. Da muss man noch was erfinden!  
4       Subscription Service  
4.1 LH 6   Noch ein Hinweis zur Frage UTC oder ME(S)Z: Der Subscription-Service arbeitet intern schon mit struct timeval, also mit Timestamps, die auch ein Datum beinhalten. Da sich der Service die Timestamp der zuletzt an die Anwendung gelieferten Daten merkt und später kommende Daten mit früherer Timestamp verwirft, kriegt man bei der Umstellung von MEZ auf MESZ eine Stunde lang keine Responses, sondern nur eine Fehlermeldung im Logfile. Bei dieser Zeitumstellung wird nämlich die Uhr von 3:00 Uhr auf 2:00 Uhr zurück gestellt. Erledigt mit 1970-UTC-Timestamp. DONE
4.2 LH 3   Die Änderungen in Timer::run() verstehen und entscheiden, ob sie für alle Fälle geeignet sind oder ob es noch Fallen gibt.  
5       Userface  
5.1 GSch 1   Die Skripte des UfcServers sollen diesen nicht via current -Links referieren, sondern explizit über einen eigenen, noch zu erfindenden Link, ganz ähnlich, wie das bei Devman mit dem library -Link ist. Dieser neue Link soll mit relufcserver auf die gewünschte Release gesetzt werden. Via current hat man ganz automatisch einen neuen UfcServer, wenn diese Links umgesetzt werden, was man aber womöglich gar nicht möchte.  
5.2 GSch 2   Wäre es nicht besser, die UfcServer-Logs in /var/log/equ/ufcserver abzulegen statt in /usr/local/acc/production/log? Da hätte man alles an Logs an einem Ort.  
9       Allgemeines  
9.1 LH 3   Das Script vmeconfig soll das Makefile für USRs und EQMs so generieren, dass mit einem anschließenden make clean auch die Objects der "Additional Files" gelöscht werden.
Achtung: Als "Additional Files" können auch Objectfiles, z.B. myfile.o, angegeben werden. Die sollen sicher nicht gelöscht werden.
 
9.2 KHoe 4   In den XML-Dateien sollte man den Tag <version> mehrfach angeben können, so dass ein Output entsteht, wie er z.B. in gm-device.hh unter \version zu finden ist. Vielleicht kann man sogar das \n automatisch anhängen.  
Topic revision: r95 - 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