Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
introduces InputCache for caching Input data streams to disk
for Input implementations that cannot provide the data streams multiple times, something that the parallel batch importer requires. The cache u es a binary format stored on disk. InputIterable can tell the importer whether or not it supports multiple passes, if not then the importer will cache the data streams the first run and use for consecutive runs.
- Loading branch information
Showing
30 changed files
with
1,966 additions
and
72 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
64 changes: 64 additions & 0 deletions
64
community/kernel/src/main/java/org/neo4j/unsafe/impl/batchimport/InputEntityCacherStep.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Original file line | Diff line number | Diff line change |
---|---|---|---|
@@ -0,0 +1,64 @@ | |||
/** | |||
* Copyright (c) 2002-2015 "Neo Technology," | |||
* Network Engine for Objects in Lund AB [http://neotechnology.com] | |||
* | |||
* This file is part of Neo4j. | |||
* | |||
* Neo4j is free software: you can redistribute it and/or modify | |||
* it under the terms of the GNU General Public License as published by | |||
* the Free Software Foundation, either version 3 of the License, or | |||
* (at your option) any later version. | |||
* | |||
* This program is distributed in the hope that it will be useful, | |||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
* GNU General Public License for more details. | |||
* | |||
* You should have received a copy of the GNU General Public License | |||
* along with this program. If not, see <http://www.gnu.org/licenses/>. | |||
*/ | |||
package org.neo4j.unsafe.impl.batchimport; | |||
|
|||
import java.io.IOException; | |||
|
|||
import org.neo4j.kernel.impl.store.record.PrimitiveRecord; | |||
import org.neo4j.unsafe.impl.batchimport.input.InputEntity; | |||
import org.neo4j.unsafe.impl.batchimport.input.Receiver; | |||
import org.neo4j.unsafe.impl.batchimport.staging.ExecutorServiceStep; | |||
import org.neo4j.unsafe.impl.batchimport.staging.StageControl; | |||
|
|||
/** | |||
* Caches the incoming {@link InputEntity} to disk, for later use. | |||
*/ | |||
public class InputEntityCacherStep<INPUT extends InputEntity> | |||
extends ExecutorServiceStep<Batch<INPUT,? extends PrimitiveRecord>> | |||
{ | |||
private final Receiver<INPUT[],IOException> cacher; | |||
|
|||
public InputEntityCacherStep( StageControl control, int workAheadSize, int movingAverageSize, | |||
Receiver<INPUT[],IOException> cacher ) | |||
{ | |||
super( control, "CACHE", workAheadSize, movingAverageSize, 1 ); | |||
this.cacher = cacher; | |||
} | |||
|
|||
@Override | |||
protected Object process( long ticket, Batch<INPUT,? extends PrimitiveRecord> batch ) throws IOException | |||
{ | |||
cacher.receive( batch.input ); | |||
return batch; | |||
} | |||
|
|||
@Override | |||
protected void done() | |||
{ | |||
try | |||
{ | |||
cacher.close(); | |||
} | |||
catch ( IOException e ) | |||
{ | |||
throw new RuntimeException( "Couldn't close input cacher", e ); | |||
} | |||
} | |||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.