/** * If there is already a map of messages related to the partition id * return that map, otherwise create a new one, put it in global map and * return it. * * @param partitionId Id of partition * @return Message map for this partition */ protected ConcurrentMap<I, T> getOrCreatePartitionMap(int partitionId) { ConcurrentMap<I, T> partitionMap = map.get(partitionId); if (partitionMap == null) { ConcurrentMap<I, T> tmpMap = new MapMaker().concurrencyLevel( config.getNettyServerExecutionConcurrency()).makeMap(); partitionMap = map.putIfAbsent(partitionId, tmpMap); if (partitionMap == null) { partitionMap = tmpMap; } } return partitionMap; }
@Override protected ConcurrentMap<I, OutEdges<I, E>> getPartitionEdges( int partitionId) { ConcurrentMap<I, OutEdges<I, E>> partitionEdges = (ConcurrentMap<I, OutEdges<I, E>>) transientEdges.get(partitionId); if (partitionEdges == null) { ConcurrentMap<I, OutEdges<I, E>> newPartitionEdges = new MapMaker().concurrencyLevel( configuration.getNettyServerExecutionConcurrency()).makeMap(); partitionEdges = (ConcurrentMap<I, OutEdges<I, E>>) transientEdges.putIfAbsent(partitionId, newPartitionEdges); if (partitionEdges == null) { partitionEdges = newPartitionEdges; } } return partitionEdges; }
/** * Constructor * * @param messageValueFactory Message class held in the store * @param service Service worker * @param config Giraph configuration */ public SimpleMessageStore( MessageValueFactory<M> messageValueFactory, CentralizedServiceWorker<I, ?, ?> service, ImmutableClassesGiraphConfiguration<I, ?, ?> config) { this.messageValueFactory = messageValueFactory; this.service = service; this.config = config; map = new MapMaker().concurrencyLevel( config.getNettyServerExecutionConcurrency()).makeMap(); }
/** * Constructor. * * @param service Service worker * @param configuration Configuration * @param progressable Progressable */ public AbstractEdgeStore( CentralizedServiceWorker<I, V, E> service, ImmutableClassesGiraphConfiguration<I, V, E> configuration, Progressable progressable) { this.service = service; this.configuration = configuration; this.progressable = progressable; transientEdges = new MapMaker().concurrencyLevel( configuration.getNettyServerExecutionConcurrency()).makeMap(); reuseEdgeObjects = configuration.reuseEdgeObjects(); useInputOutEdges = configuration.useInputOutEdges(); }
@Override public void readFields(DataInput input) throws IOException { super.readFields(input); int size = input.readInt(); vertexMap = new MapMaker().concurrencyLevel( getConf().getNettyServerExecutionConcurrency()).initialCapacity( size).makeMap(); representativeVertex = getConf().createVertex(); representativeVertex.initialize( getConf().createVertexId(), getConf().createVertexValue(), getConf().createOutEdges()); useUnsafeSerialization = getConf().useUnsafeSerialization(); for (int i = 0; i < size; ++i) { progress(); I vertexId = getConf().createVertexId(); vertexId.readFields(input); int vertexDataSize = input.readInt(); byte[] vertexData = new byte[vertexDataSize]; input.readFully(vertexData); if (vertexMap.put(vertexId, vertexData) != null) { throw new IllegalStateException("readFields: Already saw vertex " + vertexId); } } }
@Override public void initialize(int partitionId, Progressable progressable) { super.initialize(partitionId, progressable); vertexMap = new MapMaker().concurrencyLevel( getConf().getNettyServerExecutionConcurrency()).makeMap(); representativeVertex = getConf().createVertex(); representativeVertex.initialize( getConf().createVertexId(), getConf().createVertexValue(), getConf().createOutEdges()); representativeCombinerVertex = getConf().createVertex(); representativeCombinerVertex.initialize( getConf().createVertexId(), getConf().createVertexValue(), getConf().createOutEdges()); useUnsafeSerialization = getConf().useUnsafeSerialization(); }