GobbyServerPersistentState

Differences between revisions 1 and 4 (spanning 3 versions)
Revision 1 as of 2008-06-02 06:49:48
Size: 1712
Editor: a91-154-115-6
Comment:
Revision 4 as of 2008-06-17 18:32:31
Size: 2523
Editor: a91-154-115-6
Comment:
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
== FIXME ==

 * Look at current source code, see how big a job implementing this would be.
 * Discuss the change with upstream.
 * '''Launchpad Entry''': UbuntuSpec:gobby-server-persistent-state
 * '''Created''': 2008-06-02
 * '''Contributors''': LarsWirzenius
 * '''Packages affected''': sobby
Line 13: Line 13:
The Gobby server now saves its documents in a persistent way and
commits all changes to a version control system.
The Gobby server now optionally commits automatically saved
do
cuments to a version control system.
Line 26: Line 26:
Add configuration option to server to determine where it will save
its state.
The standalone Gobby server, in the sobby package, already has the
automatic saving feature.
Line 29: Line 29:
Make it create the directory and initialize it as a bzr branch,
if the directory/branch does not exist already.
The needed change is to add an option to additionally call an
external script after the automatic save has been triggered.
This script can then take care of committing the file(s) to
some version control system (bzr at least).
Line 32: Line 34:
Every time a document changes, save it to a file in the directory,
and run "bzr commit -m.".
The automatic saving feature
is triggered by a timer, and the interval is user-settable. This
means that if committing every second is too heavy, the time can
be adjusted to committing every minute, or some other sufficiently
long (for performance) and short (to limit data loss on crash)
interval.
Line 35: Line 41:
When starting, the server should automatically load its documents from
files in the directory, if any exist.
The acceptability of this change needs to be discussed with
Canonical IS, who run gobby.ubuntu.com, but is not directly
dependent on them, since it is useful to other people running
their own servers.
Line 40: Line 48:
To be determined. Add option to call script.

Write script to commit the automatically saved file to bzr, if
the file is saved to a bzr working directory.
Line 60: Line 71:
Client overwrite test:

 * Start Gobby server.
 * Make long document. Let server automatically save it.
 * Have client replace all contents of long document with a single character.
 * Recover long document via bzr.

Summary

Make the gobby server save its state in files, and automatically commit those files to bzr.

Release Note

The Gobby server now optionally commits automatically saved documents to a version control system.

Rationale

Ubuntu uses Gobby, the collaborative editor, a lot at conferences. It is an invaluable tool, but not as reliable as it could be. The server sometimes crashes, taking all documents with it. Fix this by having the server save its document to persistent storage often, and to keep them in bzr, too.

Design

The standalone Gobby server, in the sobby package, already has the automatic saving feature.

The needed change is to add an option to additionally call an external script after the automatic save has been triggered. This script can then take care of committing the file(s) to some version control system (bzr at least).

The automatic saving feature is triggered by a timer, and the interval is user-settable. This means that if committing every second is too heavy, the time can be adjusted to committing every minute, or some other sufficiently long (for performance) and short (to limit data loss on crash) interval.

The acceptability of this change needs to be discussed with Canonical IS, who run gobby.ubuntu.com, but is not directly dependent on them, since it is useful to other people running their own servers.

Implementation

Add option to call script.

Write script to commit the automatically saved file to bzr, if the file is saved to a bzr working directory.

Test/Demo Plan

Simple:

  • Do the following with and without the proposed changes.
  • Start Gobby.
  • Create document, with some content.
  • Kill -9 the server.
  • Restart Gobby.
  • See if the document still exists, with the right content.

Stress test:

  • Start Gobby server.
  • Start N dummy clients that randomly create documents and add text to them at a speed resembling that of a fast typist (100 word/minute).
  • See how big N can be without creating too much lag on the server.

Client overwrite test:

  • Start Gobby server.
  • Make long document. Let server automatically save it.
  • Have client replace all contents of long document with a single character.
  • Recover long document via bzr.


CategorySpec

GobbyServerPersistentState (last edited 2008-08-06 16:16:48 by localhost)