[ 
https://issues.apache.org/jira/browse/GIRAPH-36?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13139923#comment-13139923
 ] 

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: https://issues.apache.org/jira/browse/GIRAPH-36
>             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: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to