wiki:MapGuideRfc66

Version 5 (modified by CXYS, 15 years ago) ( diff )

--

MapGuide RFC 66 - Failover

This page contains an change request (RFC) for the MapGuide Open Source project. More MapGuide RFCs can be found on the RFCs page.

Status

RFC Template Version(1.0)
Submission Date(June 16, 2009)
Last Modified(Christine Bao Thu Jun 25 02:22:17 2009)
Author(Christine Bao)
RFC Status(draft)
Implementation Status(under development)
Proposed Milestone(2.2)
Assigned PSC guide(s)(Tom Fukushima)
Voting History(vote date)
+1
+0
-0
-1
no vote

Overview

Failover is to improve user feedback to monitor state between client and server tier, while detect and report cases of failure in both Ajax and Fusion web layout.

Motivation

Customer reports that if leave the browser open for some while without any operation, the session will timeout and can’t get informed. If server is down the error message is not easy to read and user can’t figure out what happens.
The use cases would be:

  1. If the Http session is timeout, the user should be informed about the fact instead of getting some script errors or meaningless error messages.
  2. If the MapGuide Server session is timeout, the user should be informed about the fact instead of getting some script errors or some meaningless error messages.
  3. If the connection to MapGuide Server is broken, the user should be informed by a friendly message which helps the user know what's happening instead of getting a kind of "exception stack trace" message box.

Proposed Solution

The possible solutions could be:

  1. To avoid timeout (either from browser to web tier, or from web tier to MapGuide server), implement a script which pings the servers periodically to keep the both sessions alive.
  2. Refine the code handling the exceptions like "connection broken" to provide more friendly messages.

Implications

  1. Keep alive
    1. Fusion already pings server periodically by calling "Common.php", so there is no plan to change Fusion's behavior.
    2. Ajax viewer doesn’t ping server to keep-alive so far. If open an Ajax viewer and leave it open for a while more than the timeout interval, it can’t continue work. To keep Ajax viewer alive, the approach is:
      1). Create a server API GetSessionTimeout(), return the timeout setting from server side.
      2). Call GetSessionTimeout() from mainframe.templ periodically.
      User doesn’t need to set the time interval of pinging. It’s read from server timeout setting and divided by 5. User can turn the ping on/off by setting <EnablePingServer>=1/0 of basic web layout.
  1. Refine exception handling such as “connection broken”
    1. Fusion does not handle exception message well. It shows long unreadable message when exception happens. For example if connection broken the error message is "FATAL: xml2json: invalid XML document: MgConnectionFailedException : http://127.0.0.1/mapguide2010/mapagent/mapagent.fcgi?version=1.0.0&locale=en&clientagent=Fusion%20Viewer&operation=QUERYMAPFEATURES&session=40d3e074-3ee5-102c-8000-005056c00008_en_7F0000010AFC0AFB0AFA&mapname=Sheboygan4a3b609791c82&geometry=POLYGON((-87.730254250931%2043.73763292302%2C%20-87.730254250931%2043.737069942268%2C%20-87.729691270179%2043.737069942268%2C%20-87.729691270179%2043.73763292302%2C%20-87.730254250931%2043.73763292302))&maxFeatures=1&persist=0&selectionVariant=INTERSECTS&layerNames=&layerAttributeFilter=5 type=0". This is no user-friendly. The error message should show exception message such as "Fussion error: Cannot establish connection".
    2. Ajax viewer shows exception messages and they are user-friendly. No improvements needed for Ajax viewer.

Test Plan

Test both Ajax viewer and Fusion viewer.

Funding/Resources

Supplied by Autodesk.

Note: See TracWiki for help on using the wiki.