incubator-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 Mon, 31 Oct 2011 05:12:32 GMT


Jake Mannix commented on GIRAPH-36:

Hey Avery,

  Glad you could get it to all work (unit-test-wise) for you - did you run the unit tests
talking to a real cluster, or just localhost?  I haven't tried the former yet...

  Regarding the comments: I'm fine keeping GraphState hidden to the implementation details,
but will it always work in practice?  I mean, all of the state in there used to be global
static state in Vertex, and all subclasses had full read/write access to it.  We've segregated
it in a non-static object which we're treating as a singleton (but aren't forcing it to be
one programmaticly), but can we really hide it?

  For example, BasicVertex#sendMsg() requires the WorkerCommunications, which it gets from
the GraphMapper, which it gets from the GraphState.  Do you think we should implement all
the things we think the user will need from the GraphMapper directly *in* BasicVertex (or
MutableVertex), and remove the getGraphState() method entirely, or just keep it package private
for now. 

  In general, I like keeping impl details away from developers too, but this early in the
project, we also shouldn't hamstring ourselves by thinking there is a difference from a "casual
user" of the system, and someone willing to hack around a bit. :)

  2) If VertexReader is going to return a BasicVertex<I,V,E,M> from getCurrentVertex()
to callers who really need it to be fully specified nice and type-safely, what choice do we
have?  From a pratical, rather than API standpoint, is it possible we'd someday want to be
able to read up a collection of vertices with initial messages ready to be processed?  Not
sure if that matters.

  3) I tried, and can clean up as possible, but I really rely on my IDE settings for that.
 Not being able to set autoformat on means I'm pretty doomed, but if you see places where
I can clean up manually, I can do that, sure.
> 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
> 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