giraph-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Jake Mannix (Commented) (JIRA)" <>
Subject [jira] [Commented] (GIRAPH-36) Ensure that subclassing BasicVertex is possible by user apps
Date Wed, 02 Nov 2011 21:53:32 GMT


Jake Mannix commented on GIRAPH-36:

It's tricky, I think.  The original Vertex class was exactly meant to hide (via private) some
of the implementation details of state, yet leave userland APIs which the user is meant to
implement.  But then it turned out that the most generic way to hold onto the destination
vertices and edge weights is not always the most efficient (hence: primitive-specific subclasses).

But maybe you're just saying that we should pull out most of this "implementation specific"
state into other objects, decompose Vertex a bit, and have users be able to pluggably implement
the parts which need to be made special, and leave as generic those which are generic?

Some stuff we already have done: GraphState encapsulates all global state (current superstep,
number of global edges + vertices, etc).  Local state could be similarly pulled off into a
couple of different data structures (edges with weights, messages).

I can certainly imagine this being very nice and clean.

Open a ticket and describe some thoughts on how it could look in practice?  Sounds like it
could be another pretty significant refactoring, so let's do it sooner rather than later!
> Ensure that subclassing BasicVertex is possible by user apps
> ------------------------------------------------------------
>                 Key: GIRAPH-36
>                 URL:
>             Project: Giraph
>          Issue Type: Improvement
>          Components: graph
>    Affects Versions: 0.70.0
>            Reporter: Jake Mannix
>            Assignee: Jake Mannix
>            Priority: Blocker
>             Fix For: 0.70.0
>         Attachments: GIRAPH-36.diff, GIRAPH-36.diff, GIRAPH-36.diff, GIRAPH-36.diff.warnings
> Original assumptions in Giraph were that all users would subclass Vertex (which extended
MutableVertex extended BasicVertex).  Classes which wish to have application specific data
structures (ie. not a TreeMap<I, Edge<I,E>>) may need to extend either MutableVertex
or BasicVertex.  Unfortunately VertexRange extends ArrayList<Vertex>, and there are
other places where the assumption is that vertex classes are either Vertex, or at least MutableVertex.
> Let's make sure the internal APIs allow for BasicVertex to be the base class.

This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:!default.jspa
For more information on JIRA, see:


View raw message