[
https://issues.apache.org/jira/browse/AVRO-587?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12884041#action_12884041
]
Philip Zeyliger commented on AVRO-587:
--------------------------------------
Patrick,
Good work getting this working!
I made some comments on the reviewboard copy of this. The things i'm concerned
about are the handling of static resources (seems better to leverage an
existing servlet) and whether or not you could move even more into the
templates.
-- Philip
lang/java/src/java/org/apache/avro/ipc/stats/StatsServlet.java
<http://review.hbase.org/r/243/#comment1316>
(style nit) Non-local variables should probably have longer names. vEngine
or velocityEngine is more typical.
lang/java/src/java/org/apache/avro/ipc/stats/StatsServlet.java
<http://review.hbase.org/r/243/#comment1317>
Should the two ve.addProperty lines both be there? Maybe put them
underneath the same comment or explain the difference.
lang/java/src/java/org/apache/avro/ipc/stats/StatsServlet.java
<http://review.hbase.org/r/243/#comment1318>
Javadoc? Does this need to be public?
lang/java/src/java/org/apache/avro/ipc/stats/StatsServlet.java
<http://review.hbase.org/r/243/#comment1319>
Seems like this wouldn't handle the string 'foo"bar' correctly, since the
quotes themselves would need escaping.
lang/java/src/java/org/apache/avro/ipc/stats/StatsServlet.java
<http://review.hbase.org/r/243/#comment1320>
One alternative here is to use a directory ("/static/") to determine this,
rather than the extension.
lang/java/src/java/org/apache/avro/ipc/stats/StatsServlet.java
<http://review.hbase.org/r/243/#comment1321>
A couple of problems here:
(1) mediaFileName might be "../../../" which might let folks read arbitrary
data from the classpath: not a great idea. (I actually think I've had trouble
using .. in resources before, but that doesn't mean that it's not worrisome).
(2) Indentation is wonky.
(3) Using is.read() to get a single byte is slower than reading buffers at a
time. Look around for utility methods to read fully from a stream into another
stream. I know Hadoop has some; not sure about Avro's code base.
Ultimately, I think it might be wiser to delegate to an existing servlet for
serving static files. Something like
http://jetty.codehaus.org/jetty/jetty-6/apidocs/org/mortbay/jetty/servlet/DefaultServlet.html
. If the request matches a certain path, just have that servlet do it. That
servlet is more likely to do cache headers, mime types, and efficient IO than
you are.
You might have to do some hunting to find the resources. Looks like that
might be done by subclassing and over-riding getResource().
(4) I would separate the static and dynamic code paths into two methods.
lang/java/src/java/org/apache/avro/ipc/stats/StatsServlet.java
<http://review.hbase.org/r/243/#comment1322>
Does keySet() make a copy? If it doesn't (and I kind of doubt it), the
synchronized isn't really helping you.
lang/java/src/java/org/apache/avro/ipc/stats/StatsServlet.java
<http://review.hbase.org/r/243/#comment1323>
This looks like it could be a private static final field of the class; no
need to create one of these at every request.
lang/java/src/java/org/apache/avro/ipc/stats/StatsServlet.java
<http://review.hbase.org/r/243/#comment1324>
Any reason not to put this in the template itself? Seems weird to have both
templates and string concatenation.
lang/java/src/java/org/apache/avro/ipc/stats/StatsServlet.java
<http://review.hbase.org/r/243/#comment1325>
Could this be in the temlate?
lang/java/src/java/org/apache/avro/ipc/stats/StatsServlet.java
<http://review.hbase.org/r/243/#comment1326>
weird indent
lang/java/src/java/org/apache/avro/ipc/stats/templates/g.bar.js
<http://review.hbase.org/r/243/#comment1327>
Apache projects have a "rat" tool that checks that licenses are ok. Could
you make sure that when "rat' is run with this file included, it's happy with
it?
lang/java/src/java/org/apache/avro/ipc/stats/templates/statsview.vm
<http://review.hbase.org/r/243/#comment1329>
If velocity templates have comments, would be good to put a license file up
there.
lang/java/src/java/org/apache/avro/ipc/stats/templates/statsview.vm
<http://review.hbase.org/r/243/#comment1328>
Maybe it's appropriate to pull this script out into a separate file?
> Add Charts and Templating to Stats View
> ---------------------------------------
>
> Key: AVRO-587
> URL: https://issues.apache.org/jira/browse/AVRO-587
> Project: Avro
> Issue Type: Sub-task
> Reporter: Patrick Wendell
> Assignee: Patrick Wendell
> Attachments: AVRO-587.patch.v1.txt, AVRO-587.patch.v2.txt
>
>
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.