Integration of the independent session server

worked on by: Michael Krummrei

Outline

The development of an independent session server for Saros started in 2014 with the work of Nils Bussas, which resulted in a first prototype. In 2015/16 Denis Washington continued the development during his master thesis. Besides adding several features, he designed a new protocol for the "Project Negotiation", the process of exchanging files belonging to a shared project during the invitation of a user. His work finally led to a new prototype, which is able to IDE-indepently run a shared session between several instances of the Saros-plugin. In such a scenario scenario the server acts as the sessions host and manages the creation of a session, the invitation of users, the sharing of projects and the synchronization of changes on the projects resources between the participants. This enhanced prototype was published as the so called "Huge Server Patch" change (in the following abbreviated "HSP") in Saros' Gerrit repository, but is far to big to get reviewed in a practical manner. Some of it's components have been split out of this patch and published as individual changes. A few have already passed the review and thus been merged with the code base.

Thesis Requirements

The task is to continue the integration of the servers components. The final goal is archived when all features, required to run an IDE-independent session server, are part of Saros' source code.

For this it is necessary to
  • examine the actual state of the development by looking on the source code produced by Denis Washington and testing the provided functionalities
  • examine the process of "changing Saros" (or "integrating changes in Saros") and all systems/persons/techniques/principals etc. that are part of this process
  • examine the single components states in the process of integration
  • find solutions for issues that occurred during running or appear during newly initialised reviews

Milestones and Planning

Milestone no. Past days CW Goals target accomplished wrench
1 CW1 Examine HSP: list features, known bugs, open problems accomplished
2   Rebase the Huge Server Patch accomplished
3   Split the HSP into single changes for each component accomplished
4   Get all components reviewed and merged with the master-branch running

Weekly Status

pre Week 1 (pre CW 3)

Activities

  • reading material related to the Saros Server development
  • investigate and check the feature list of the server provided by the Huge Server Patch

Results

Next Steps

  • determine the individual components of the HSP

Problems

  • an "AtomicMoveNotSupportedException" occurs on UNIX filesystem, if the temporary folder and the working space folder (or the folder of the servers executeable .jar file) are bound under different mount points

Week 1 (CW 4)

Activities

  • analysed the structure of the HSP and determined the individual components
  • checked, which components have already been published as changes in Gerrit and the related feedback from reviews

Results

  • diagram containing the HSP's components and the dependencies between them

Next Steps

  • Review Change 2921 & Change 2940
  • Rebase the HSP

Week 2 (CW 5)

Activities

  • continued activities from Week 1

Results

  • none

Next Steps

  • Review Change 2921 & Change 2940
  • Rebase the HSP
  • create wiki

Week 3 (CW 6)

Activities

  • reviewed Change 2921

Results

  • published Change 2921 Patch Set 7

Next Steps

  • Review Change 2940
  • Rebase the HSP
  • create wiki

Week 4 (CW 7)

Activities

  • reviewed Change 2940
  • created this wiki
  • startet rebasing the HSP

Results

*

Next Steps

  • continue rebasing the HSP

Week 5 (CW 8)

Activities

  • continued rebasing the HSP

Results

  • none

Next Steps

  • finish rebasing the HSP

Week 6 (CW 9)

Activities

  • continued rebasing the HSP

Results

Problems

  • several exceptions occurred during execution of the rebased server, especially when creating the context (exceptions occurred due to missing dependencies)

Next Steps

  • finish rebasing the HSP
  • investigate the exceptions, solve the defects, publish the patch

Week 7 & 8 (CW 10 & 11)

Activities

  • continued rebasing the HSP
  • trying to understand and solve the problems from week 6
  • worked through a lot of literature related to the usage of PicoContainers, the general principles of Dependency Injection and Inversion of Control Containers
  • investigated the intended behavior plus the source code of components, whose injection led to exceptions (week 6) … also had a look on changes of those components that happened since D.Washington published the HSP

Results

*

Problems

  • a lack of experience while using Git/Gerrit in combination with eclipse led trial-and-error-work and messed up workspaces …. this and the following clean-ups took a lot of time

Next Steps

  • continue investigation of problems & finish rebase
  • handle feedback from running reviews
  • write thesis-document

Week 9 (CW 12)

Activities

  • finished rebase
  • splitted the rebased HSP and pushed the individual changes to Gerrit to get them reviewed
  • handled feedback from running reviews

Results

  • committed the rebased HSP as a new patch set
  • found an issue with the @nullable-annotation in picocontainers which doesn't seem to work according to it's specification (this caused some of the problems during context-creation … pico was not able to provide a ConnectionHandler without the nullable parameter, like it should because the parameter is nullable)

Problems

Next Steps

  • finish splitting the HSP
  • write thesis-document
  • handle feedback from reviews

Week 10 (CW 13)

Activities

  • wrote the thesis document
  • handled feedback from reviews
  • implemented a hotfix for the ConnectionHandler by providing a second constructor without the nullable parameter

Results

  • hotfix worked
  • finished splitting the rebased HSP

Problems

Next Steps

  • post the @nullable-issue to the developer-mailinglist
  • continue handling the feedbacks
  • continue writing the thesis document

Week 11 (CW 14)

Activities

  • handled feedback
  • used most of the week writing the thesis document

Week 12 (CW 15)

  • should have finished writing and submitted the thesis document, but unfortunately got ill… new date of submission is 01.06.2017 (in CW 22)

Calendar Week 24

  • added information to this wiki