Some days ago I was browsing some Google Groups. Then this page came out:
<html>
<head>
<title>Error: Exception thrown while generating page</title>
</head>
<body>
<h2>Error: Exception thrown while generating page</h2>
<pre>
java.lang.OutOfMemoryError: MemoryError: Unable to resize ULIST to 20: Out of memory
at org.clearsilver.CS._parseFile(Native Method)
at org.clearsilver.CS.parseFile(CS.java:58)
at com.google.clearsilver.base.PageBase.go(PageBase.java:486)
at com.google.clearsilver.base.PageServlet.handleRequest(PageServlet.java:44)
at com.google.clearsilver.base.PageServlet.doGet(PageServlet.java:33)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at com.google.gse.HttpConnection.runServlet(HttpConnection.java:534)
at com.google.gse.HttpConnection.run(HttpConnection.java:458)
at com.google.gse.DispatchQueue$WorkerThread.run(DispatchQueue.java:299)
</pre>
</body>
</html>
This is very interesting for two reasons:
Here is what you can learn from this stack trace:
<html>
<head>
<title>Error: Exception thrown while generating page</title>
</head>
<body>
<h2>Error: Exception thrown while generating page</h2>
<pre>
java.lang.OutOfMemoryError: MemoryError: Unable to resize ULIST to 20: Out of memory
at org.clearsilver.CS._parseFile(Native Method)
at org.clearsilver.CS.parseFile(CS.java:58)
at com.google.clearsilver.base.PageBase.go(PageBase.java:486)
at com.google.clearsilver.base.PageServlet.handleRequest(PageServlet.java:44)
at com.google.clearsilver.base.PageServlet.doGet(PageServlet.java:33)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at com.google.gse.HttpConnection.runServlet(HttpConnection.java:534)
at com.google.gse.HttpConnection.run(HttpConnection.java:458)
at com.google.gse.DispatchQueue$WorkerThread.run(DispatchQueue.java:299)
</pre>
</body>
</html>
This is very interesting for two reasons:
- Shows that even at Google they are human and make mistakes. Having some exceptions is ok,
but they should be catched, logged internally and not shown directly to the user, or at least the stack
trace should be hidden. - Reveals some inner workings of a state of the art Web 2.0 application
such as Google Groups.
Here is what you can learn from this stack trace:
- They are using Java
- Regular Servlets
- ClearSilver as template engine
- They built a framework based on ClearSilver
- They use their own application server, called GSE... what is it for? Google Server Engine? Google Servlet Engine? who knows...