From 94d750848699d4a354b1b47feac76eff7b1d651f Mon Sep 17 00:00:00 2001 From: Michael Hunger Date: Tue, 10 Jun 2014 02:56:15 +0200 Subject: [PATCH 1/7] reverting stores to previous/different versions --- api/pom.xml | 41 +++ .../java/org/neo4j/tool/api/NodeInfo.java | 17 ++ .../main/java/org/neo4j/tool/api/RelInfo.java | 19 ++ .../java/org/neo4j/tool/api/StoreHandler.java | 12 + .../java/org/neo4j/tool/api/StoreReader.java | 13 + .../java/org/neo4j/tool/api/StoreWriter.java | 10 + neo4j20/pom.xml | 51 ++++ .../neo4j/tool/impl/StoreBatchHandler20.java | 37 +-- .../neo4j/tool/impl/StoreBatchReader20.java | 68 +++++ .../neo4j/tool/impl/StoreBatchWriter20.java | 41 +++ pom.xml | 23 +- runner/pom.xml | 51 ++++ .../java/org/neo4j/tool/StoreCopyRevert.java | 228 ++++++++++++++++ .../java/org/neo4j/tool/DomainAnalyzer.java | 98 ------- .../java/org/neo4j/tool/GraphGenerator.java | 55 ---- .../java/org/neo4j/tool/PropertyAnalyzer.java | 165 ------------ src/main/java/org/neo4j/tool/Rels.java | 21 -- .../tool/SingleRelationshipDeletion.java | 82 ------ .../java/org/neo4j/tool/StoreComparer.java | 252 ------------------ src/main/java/org/neo4j/tool/StoreCopy.java | 178 ------------- 20 files changed, 588 insertions(+), 874 deletions(-) create mode 100644 api/pom.xml create mode 100644 api/src/main/java/org/neo4j/tool/api/NodeInfo.java create mode 100644 api/src/main/java/org/neo4j/tool/api/RelInfo.java create mode 100644 api/src/main/java/org/neo4j/tool/api/StoreHandler.java create mode 100644 api/src/main/java/org/neo4j/tool/api/StoreReader.java create mode 100644 api/src/main/java/org/neo4j/tool/api/StoreWriter.java create mode 100644 neo4j20/pom.xml rename src/main/java/org/neo4j/tool/StoreUpdate.java => neo4j20/src/main/java/org/neo4j/tool/impl/StoreBatchHandler20.java (52%) create mode 100644 neo4j20/src/main/java/org/neo4j/tool/impl/StoreBatchReader20.java create mode 100644 neo4j20/src/main/java/org/neo4j/tool/impl/StoreBatchWriter20.java create mode 100644 runner/pom.xml create mode 100644 runner/src/main/java/org/neo4j/tool/StoreCopyRevert.java delete mode 100644 src/main/java/org/neo4j/tool/DomainAnalyzer.java delete mode 100644 src/main/java/org/neo4j/tool/GraphGenerator.java delete mode 100644 src/main/java/org/neo4j/tool/PropertyAnalyzer.java delete mode 100644 src/main/java/org/neo4j/tool/Rels.java delete mode 100644 src/main/java/org/neo4j/tool/SingleRelationshipDeletion.java delete mode 100644 src/main/java/org/neo4j/tool/StoreComparer.java delete mode 100644 src/main/java/org/neo4j/tool/StoreCopy.java diff --git a/api/pom.xml b/api/pom.xml new file mode 100644 index 0000000..a60b2b4 --- /dev/null +++ b/api/pom.xml @@ -0,0 +1,41 @@ + + 4.0.0 + + org.neo4j.util + store-util-api + 2.0.1 + jar + + store-util-api + + + UTF-8 + + + + + junit + junit + test + 4.11 + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 2.3.2 + + 1.7 + 1.7 + -Xlint:all + true + false + + + + + diff --git a/api/src/main/java/org/neo4j/tool/api/NodeInfo.java b/api/src/main/java/org/neo4j/tool/api/NodeInfo.java new file mode 100644 index 0000000..624aa5f --- /dev/null +++ b/api/src/main/java/org/neo4j/tool/api/NodeInfo.java @@ -0,0 +1,17 @@ +package org.neo4j.tool.api; + +import java.util.Map; + +/** +* @author mh +* @since 10.06.14 +*/ +public class NodeInfo { + public final long id; + public Map data; + public String[] labels; + + public NodeInfo(long id) { + this.id = id; + } +} diff --git a/api/src/main/java/org/neo4j/tool/api/RelInfo.java b/api/src/main/java/org/neo4j/tool/api/RelInfo.java new file mode 100644 index 0000000..1178f3f --- /dev/null +++ b/api/src/main/java/org/neo4j/tool/api/RelInfo.java @@ -0,0 +1,19 @@ +package org.neo4j.tool.api; + +import java.util.Map; + +/** +* @author mh +* @since 10.06.14 +*/ +public class RelInfo { + public long id = -1; + public long from; + public long to; + public Map data; + public String type; + + public RelInfo(long id) { + this.id = id; + } +} diff --git a/api/src/main/java/org/neo4j/tool/api/StoreHandler.java b/api/src/main/java/org/neo4j/tool/api/StoreHandler.java new file mode 100644 index 0000000..9a442d3 --- /dev/null +++ b/api/src/main/java/org/neo4j/tool/api/StoreHandler.java @@ -0,0 +1,12 @@ +package org.neo4j.tool.api; + +import java.util.Map; + +/** +* @author mh +* @since 10.06.14 +*/ +public interface StoreHandler { + void init(String dir, Map config); + void shutdown(); +} diff --git a/api/src/main/java/org/neo4j/tool/api/StoreReader.java b/api/src/main/java/org/neo4j/tool/api/StoreReader.java new file mode 100644 index 0000000..888ba09 --- /dev/null +++ b/api/src/main/java/org/neo4j/tool/api/StoreReader.java @@ -0,0 +1,13 @@ +package org.neo4j.tool.api; + +/** +* @author mh +* @since 10.06.14 +*/ +public interface StoreReader extends StoreHandler { + NodeInfo readNode(long id); + RelInfo readRel(long id); + boolean nodeExists(long node); + long highestNodeId(); + long highestRelId(); +} diff --git a/api/src/main/java/org/neo4j/tool/api/StoreWriter.java b/api/src/main/java/org/neo4j/tool/api/StoreWriter.java new file mode 100644 index 0000000..c56a0f5 --- /dev/null +++ b/api/src/main/java/org/neo4j/tool/api/StoreWriter.java @@ -0,0 +1,10 @@ +package org.neo4j.tool.api; + +/** +* @author mh +* @since 10.06.14 +*/ +public interface StoreWriter extends StoreHandler { + void createNode(NodeInfo node); + void createRelationship(RelInfo rel); +} diff --git a/neo4j20/pom.xml b/neo4j20/pom.xml new file mode 100644 index 0000000..38830a2 --- /dev/null +++ b/neo4j20/pom.xml @@ -0,0 +1,51 @@ + + 4.0.0 + + org.neo4j.util + store-util-impl + 2.0.1 + jar + + store-util-impl + + + UTF-8 + + + + + junit + junit + 4.11 + test + + + org.neo4j + neo4j-kernel + ${project.version} + + + org.neo4j.util + store-util-api + ${project.version} + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 2.3.2 + + 1.7 + 1.7 + -Xlint:all + true + false + + + + + diff --git a/src/main/java/org/neo4j/tool/StoreUpdate.java b/neo4j20/src/main/java/org/neo4j/tool/impl/StoreBatchHandler20.java similarity index 52% rename from src/main/java/org/neo4j/tool/StoreUpdate.java rename to neo4j20/src/main/java/org/neo4j/tool/impl/StoreBatchHandler20.java index 93cbee5..ea4cf0d 100644 --- a/src/main/java/org/neo4j/tool/StoreUpdate.java +++ b/neo4j20/src/main/java/org/neo4j/tool/impl/StoreBatchHandler20.java @@ -1,18 +1,21 @@ -package org.neo4j.tool; +package org.neo4j.tool.impl; -import org.neo4j.graphdb.GraphDatabaseService; -import org.neo4j.graphdb.factory.GraphDatabaseFactory; import org.neo4j.helpers.collection.MapUtil; +import org.neo4j.tool.api.StoreHandler; +import org.neo4j.unsafe.batchinsert.BatchInserter; +import org.neo4j.unsafe.batchinsert.BatchInserters; import java.util.Map; /** * @author mh - * @since 21.12.11 + * @since 09.06.14 */ -public class StoreUpdate { +public class StoreBatchHandler20 implements StoreHandler { + + + public static Map config() { - //noinspection unchecked return (Map) MapUtil.map( "neostore.nodestore.db.mapped_memory", "100M", "neostore.relationshipstore.db.mapped_memory", "500M", @@ -21,17 +24,21 @@ public static Map config() { "neostore.propertystore.db.arrays.mapped_memory", "300M", "neostore.propertystore.db.index.keys.mapped_memory", "100M", "neostore.propertystore.db.index.mapped_memory", "100M", - "allow_store_upgrade", "true", - "cache_type", "weak" + "cache_type", "none" ); } - public static void main(String[] args) { - GraphDatabaseService db = null; - try { - db = new GraphDatabaseFactory().newEmbeddedDatabaseBuilder("target/data").setConfig(config()).newGraphDatabase(); - } finally { - if (db != null) db.shutdown(); - } + protected BatchInserter batchInserter; + protected String dir; + + @Override + public void init(String dir, Map config) { + this.dir = dir; + batchInserter = BatchInserters.inserter(dir, config == null ? config() : config); + } + + @Override + public void shutdown() { + batchInserter.shutdown(); } } diff --git a/neo4j20/src/main/java/org/neo4j/tool/impl/StoreBatchReader20.java b/neo4j20/src/main/java/org/neo4j/tool/impl/StoreBatchReader20.java new file mode 100644 index 0000000..f05369b --- /dev/null +++ b/neo4j20/src/main/java/org/neo4j/tool/impl/StoreBatchReader20.java @@ -0,0 +1,68 @@ +package org.neo4j.tool.impl; + +import org.neo4j.graphdb.Label; +import org.neo4j.tool.api.NodeInfo; +import org.neo4j.tool.api.RelInfo; +import org.neo4j.tool.api.StoreReader; +import org.neo4j.unsafe.batchinsert.BatchRelationship; + +import java.io.File; +import java.util.Arrays; +import java.util.Iterator; + +/** + * @author mh + * @since 09.06.14 + */ +public class StoreBatchReader20 extends StoreBatchHandler20 implements StoreReader { + + public static final String[] NO_LABELS = new String[0]; + private static final long NODE_RECORD = 14; + private static final long REL_RECORD = 33; + + @Override + public NodeInfo readNode(long id) { + NodeInfo node = new NodeInfo(id); + node.data = batchInserter.getNodeProperties(id); + node.labels = toLabelStrings(id); + return node; + } + + private String[] toLabelStrings(long id) { + Iterator