[ https://issues.apache.org/jira/browse/OOZIE-2406?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16168306#comment-16168306 ]
Robert Kanter commented on OOZIE-2406: -------------------------------------- I left some specific comments on RB. A few additional things: # I think we can safely remove Jung and the Commons-Collections fork given that you got the graphviz version. It still produces an image, and I think it's reasonable to assume nobody is somehow parsing those images, so it's okay if we change the look of the images by using a different library. One of the goals of this JIRA was to remove the jung library and the Commons-Collections fork because they're super old, abandoned, and potentially security liabilities. # Have you done any performance testing on the graphviz library? The Jung library was slow and ate up a ton of memory, which is why we limited the number of nodes it could process. If graphviz is way better, we could increase this number to something higher; though I think we should still have _some_ limit just to be safe. Another thing to check is what happens if Oozie gets a lot of requests for images at the same time - can the graphviz library handle that well? # Can we make the "end" circle a darker color? It's sort of hard to see in the image you attached. # I just thought of an interesting idea: it might be a good idea to create a cache for the generated images. Some kind of LRU cache in memory and/or just writing them to the local disk. We'd only do this for completed jobs (because the images will change as the job runs). This is more of a nice to have, which may or may not even be necessary, and could be a lot of work, so I think this should be a separate JIRA. Can you file a JIRA to look into this idea? # It might be a neat improvement to add a way to return the dot file (I assume there's a way to do that from the graphviz library?). We have to keep the current API returning an image for compatibility ({{job-3?show=graph\[&show-kill=true\]}}), but we could add a new parameter like {{{{job-3?show=graph\[&show-kill=true\]\[&format=dot\]}} (the default being {{&format=png}}). This would allow the caller to use the dot file in various ways (for example, perhaps Hue might use this). # Can you file a new JIRA for adding support for getting the image (whether that's png or dot format, or both) to the Oozie CLI? It's currently only supported in the REST API. > Completely rewrite GraphGenerator code > -------------------------------------- > > Key: OOZIE-2406 > URL: https://issues.apache.org/jira/browse/OOZIE-2406 > Project: Oozie > Issue Type: New Feature > Affects Versions: 4.2.0 > Reporter: Robert Kanter > Assignee: Andras Piros > Fix For: 5.0.0 > > Attachments: graphviz-many-nodes.png, jung-many-nodes.png, > OOZIE-2406.004.patch, OOZIE-2406.004.patch, OOZIE-2406.005.patch > > > The Web UI currently generates a graph of the workflow DAG as a png image > that it can show to the user ({{GraphGenerator}} class). Unfortunately, > there are a number of downsides to the current implementation: > # The image is generated server-side, which doesn't scale well and eats up > lots of memory > #- To help combat this issue, we only generate graphs for workflows with less > than 25 nodes and we disabled the refresh button in the UI > # It's slow > # It uses a library ({{net.sf.jung}} from http://jung.sourceforge.net), which > hasn't been updated since 2010. > #- This library also has a dependency on a fork of Commons-Collections > ({{net.sourceforge.collections}} from > http://sourceforge.net/projects/collections/), which similarly hasn't been > updated since 2010. This is a problem because we can't update > Commons-Collections when there are security concerns such as COLLECTIONS-580 > (though Oozie is *not* susceptible to this attack). > It would be good to do a complete rewrite, using a different library and > remove Jung and the Commons-Collections fork. Whatever we choose, it should > an svg which will draw the image on the browser. -- This message was sent by Atlassian JIRA (v6.4.14#64029)