Saros-Server: Realisierung Nutzer-unabhängiger Sitzungen für den Produktiveinsatz
worked on by: Victor Brekenfeld
Outline
Basierend auf bisheriger Arbeiten von
Nils Bussas,
Denis Washington und
Michael Krummrei soll diese Arbeit die Entwicklung und Integration des Saros Session Servers in die bestehende Infrastruktur vorantreiben um den proktiven Einsatz zu ermöglichen.
In genannten Arbeiten wurde ein eigenständiger Server entwickelt, welcher das Hosten einzelner Saros-Sitzungen unabhängig von den Teilnehmern ermöglicht. Im Gegensatz zur vorhandenen Netzwerk-Architektur bei der ein Teilnehmer die Rolle des Hosts übernimmt, steht und fällt die Sitzung beim Client-Server-Betrieb nicht mit besagtem Host-Teilnehmer.
Es besteht also die Möglichkeit zeitversetzt an einem Projekt zu arbeiten und trotzdem eine aktuelle Codebasis über den Server bereitzustellen und aufrecht zu erhalten. Auch ermöglicht der Serverbetrieb das ständige An- und Abmelden sämlicher Teilnehmer zu jeder Zeit.
Eine funktionierende Implementierung existiert, sie besitzt jedoch eine Liste von Schwachstellen, die zum täglichen Betrieb noch ausgemerzt werden müssen. Diese stellen gleichzeitig die minimalen Meilensteine für diese Arbeit dar. Weitere Verbesserungen sind denkbar und werden gegebenenfalls später hinzugefügt.
Thesis Requirements
- GUI-Integration
- Projekt-Sharing
- Jupiter-Speicherleck
Milestones and Planning
1. GUI-Integration
Die bestehenden IDE-Plugins von Saros behandeln den Server wie einen normalen Teilnehmer, was mindestens zu Verwirrung und teilweise zu Problemen beiträgt.
Der Server sollte als solcher im GUI erkennbar gemacht werden, Funktionen die im Kontext des Servers keinen Sinn ergeben, wie zB der Follow-Mode sollten nicht zur Verfügung stehen. Aktuell kann nur der Server Teilnehmer einladen (über Kommandozeilenparameter). Ein Betritt zu einer Server-Sitzung sollte sich aus der GUI realisieren lassen. Weitere server-spezifische Funktionen sollten abgebildet werden sobald realisiert, wie das Beenden einer Serversitzung.
2. Projekt-Sharing
Es besteht aktuell keine Möglichkeit ein bestehendes Projekt mit dem Server zu teilen. Zwei Ansätze sind hier denkbar.
Ein Prototyp für den alten Mechanismus besteht noch aus der Arbeit von Herrn Washington, welche an die aktuelle Codebase angepasst und weiterentwickelt werden könnte.
Desweiteren existieren Implementierungen des geplanten Features des Instant-Session-Starts. Diese neue Übertragungsmethode umgeht mehrere Problem des Non-Host-Projekt-Sharings und wäre daher bevorzugt.
Die Methoden müssen getestet und je nachdem implementiert werden.
3. Jupiter-Speicherleck
Es existiert schon länger ein bislang unbehandeltes Speicherleck in der Implementierung des Jupiter-Algorithmus von Saros. Dieses wurde bereits in der Arbeit von Herrn Washington entdeckt und bislang nicht behandelt, weil es nur im Zusammenhang mit inaktiven Teilnehmer zu bemerken ist. Auch wenn es theoretisch jeden Teilnehmer betreffen kann, erreicht es daher zumeist nur im Serverbetrieb ein kritisches Ausmaß und muss daher gelöst werden.
Weekly Status
Pre Week 1 (CW 14-17)
Activities
- Diskussion & Plannung mit Franz Zieris
- Lesen und Verstehen bisheriger Arbeiten und Patchsets
- Versuch eines Prototypen für den Instant Session Start basierend auf vorhandenem Code zum Einarbeiten in die Codebase
Results
Week 1 (CW 18)
Activities
- Debugging und Verbesserungen an der existierenden Instant Session Start Implementierung
- Aufbau dieser Seite basierend auf der abgesprochenen Projekt-Planung
Next Steps
- Start einer der Meilensteine.
Week 2 (CW 19)
Activities
- Review-Prozess für Instant Session Start
- Setup von Java Mission Control
- Schreiben eines Patches zum fixen des Jupiter-Speicherlecks
Problems
- Auffinden des "ServerEditingStressTests" aus Washington's Arbeit zum testen des Patches
Next Steps
- Testen des Jupiter-Speicherlecks