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

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: 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, 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: 
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