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 |
|
CW |
Goals |
accomplished |
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
Next Steps
- Review Change 2921 & Change 2940
- Rebase the HSP
- create wiki
Week 3 (CW 6)
Activities
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
Next Steps
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