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