Skip to content
This repository was archived by the owner on Dec 10, 2018. It is now read-only.
Michael Comella edited this page May 12, 2013 · 20 revisions

Temporary Pages

Next Steps

Issues

The major project issues can largely be found in the github issues. Smaller issues (e.g. edge cases) may also be found as TODOs in the code. Below is a selected listing of larger issues.

Essential

  • #82 - Chromium returns identical res_ids on creation
  • #83 - Multiple session IDs created per user
  • No resource garbage collecting (may soon change)
  • No malicious query protection
    • No maximum collection size per user

Notable

  • #104 - Move frontend code into seperate files
  • #107 - Specify browser compatibility
  • #96 - Move user authentication to decorators
  • #67 - Warn user when keep-alives fail
  • Multiple successive statements to the shell may not print the output in the order they were called because some requests are asynchronous. See mongo.Shell.prototype.evalStatements().
  • The client <-> server error handling is not well-thought out or robust. It may be a good idea to reconsider the API for this, as well as the error handling code at both endpoints.
  • The CORS code in mongows/mws/views.py, standalone_server, and the actual client <-> server interaction has no automated tests and is no longer well tested by hand (see Architecture for more details on this interaction pattern).

Optimization

The application has yet to be optimized for performance. Below are some potential improvements:

  • Returning a subset of results to clients - Rather than returning all the results to the client (which can be of any size), return a subset up to some max size and have the client keep track of which items the user has or has not seen
    • Cursor caching - If returning a subset, the same query will need to be made multiple times to the server, starting at different locations. As such, it may be beneficial to cache the cursor used for the initial query for a short time (and just requery the database if the cursor is not available)
  • Reduce request count by rewriting excessive JavaScript queries (i.e. for (var i = 0; i < 100; i++) { db.c.insert({key: i}); } => db.c.insert([{key: 0}, {key: 1}, ...]);
Clone this wiki locally