Smalyshev has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/183147

Change subject: more files
......................................................................

more files

Change-Id: I3347dc9367c0a2b8c6d70647d643d4ba21f7bc2b
---
A rexster-init.groovy
A rexster-wikidata.xml
A runit.groovy
A runit.sh
A src/main/java/org/wikidata/gremlin/TreePipe.java
5 files changed, 183 insertions(+), 0 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/wikidata/gremlin 
refs/changes/47/183147/1

diff --git a/rexster-init.groovy b/rexster-init.groovy
new file mode 100644
index 0000000..c36109b
--- /dev/null
+++ b/rexster-init.groovy
@@ -0,0 +1,6 @@
+w = org.wikidata.gremlin.RexsterInit.init(this)
+// Utility function for Rexster console
+groovy.lang.Script.metaClass.gg = {
+        rexster.getGraph('wikidata')
+}
+
diff --git a/rexster-wikidata.xml b/rexster-wikidata.xml
new file mode 100644
index 0000000..d70c5f0
--- /dev/null
+++ b/rexster-wikidata.xml
@@ -0,0 +1,117 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<rexster>
+    <http>
+        <server-port>8182</server-port>
+        <server-host>0.0.0.0</server-host>
+        <base-uri>http://localhost</base-uri>
+        <web-root>public</web-root>
+        <character-set>UTF-8</character-set>
+        <enable-jmx>false</enable-jmx>
+        <enable-doghouse>true</enable-doghouse>
+        <max-post-size>2097152</max-post-size>
+        <max-header-size>8192</max-header-size>
+        <upload-timeout-millis>30000</upload-timeout-millis>
+        <thread-pool>
+            <worker>
+                <core-size>8</core-size>
+                <max-size>8</max-size>
+            </worker>
+            <kernal>
+                <core-size>4</core-size>
+                <max-size>4</max-size>
+            </kernal>
+        </thread-pool>
+        <io-strategy>leader-follower</io-strategy>
+    </http>
+    <rexpro>
+        <server-port>8184</server-port>
+        <server-host>0.0.0.0</server-host>
+        <session-max-idle>1790000</session-max-idle>
+        <session-check-interval>3000000</session-check-interval>
+        <connection-max-idle>180000</connection-max-idle>
+        <connection-check-interval>3000000</connection-check-interval>
+        <enable-jmx>false</enable-jmx>
+        <thread-pool>
+            <worker>
+                <core-size>16</core-size>
+                <max-size>256</max-size>
+            </worker>
+            <kernal>
+                <core-size>16</core-size>
+                <max-size>256</max-size>
+            </kernal>
+        </thread-pool>
+        <io-strategy>leader-follower</io-strategy>
+    </rexpro>
+    <shutdown-port>8183</shutdown-port>
+    <shutdown-host>127.0.0.1</shutdown-host>
+    <script-engines>
+        <script-engine>
+            <name>gremlin-groovy</name>
+            <reset-threshold>-1</reset-threshold>
+            
<imports>com.tinkerpop.gremlin.*,com.tinkerpop.gremlin.java.*,com.tinkerpop.gremlin.pipes.filter.*,com.tinkerpop.gremlin.pipes.sideeffect.*,com.tinkerpop.gremlin.pipes.transform.*,com.tinkerpop.blueprints.*,com.tinkerpop.blueprints.impls.*,com.tinkerpop.blueprints.impls.tg.*,com.tinkerpop.blueprints.impls.neo4j.*,com.tinkerpop.blueprints.impls.neo4j.batch.*,com.tinkerpop.blueprints.impls.neo4j2.*,com.tinkerpop.blueprints.impls.neo4j2.batch.*,com.tinkerpop.blueprints.impls.orient.*,com.tinkerpop.blueprints.impls.orient.batch.*,com.tinkerpop.blueprints.impls.dex.*,com.tinkerpop.blueprints.impls.rexster.*,com.tinkerpop.blueprints.impls.sail.*,com.tinkerpop.blueprints.impls.sail.impls.*,com.tinkerpop.blueprints.util.*,com.tinkerpop.blueprints.util.io.*,com.tinkerpop.blueprints.util.io.gml.*,com.tinkerpop.blueprints.util.io.graphml.*,com.tinkerpop.blueprints.util.io.graphson.*,com.tinkerpop.blueprints.util.wrappers.*,com.tinkerpop.blueprints.util.wrappers.batch.*,com.tinkerpop.blueprints.util.wrappers.batch.cache.*,com.tinkerpop.blueprints.util.wrappers.event.*,com.tinkerpop.blueprints.util.wrappers.event.listener.*,com.tinkerpop.blueprints.util.wrappers.id.*,com.tinkerpop.blueprints.util.wrappers.partition.*,com.tinkerpop.blueprints.util.wrappers.readonly.*,com.tinkerpop.blueprints.oupls.sail.*,com.tinkerpop.blueprints.oupls.sail.pg.*,com.tinkerpop.blueprints.oupls.jung.*,com.tinkerpop.pipes.*,com.tinkerpop.pipes.branch.*,com.tinkerpop.pipes.filter.*,com.tinkerpop.pipes.sideeffect.*,com.tinkerpop.pipes.transform.*,com.tinkerpop.pipes.util.*,com.tinkerpop.pipes.util.iterators.*,com.tinkerpop.pipes.util.structures.*,org.apache.commons.configuration.*,com.thinkaurelius.titan.core.*,com.thinkaurelius.titan.core.attribute.*,com.thinkaurelius.titan.core.log.*,com.thinkaurelius.titan.core.olap.*,com.thinkaurelius.titan.core.schema.*,com.thinkaurelius.titan.core.util.*,com.thinkaurelius.titan.example.*,org.apache.commons.configuration.*,com.tinkerpop.gremlin.Tokens.T,com.tinkerpop.gremlin.groovy.*,org.wikidata.gremlin.*</imports>
+            
<static-imports>com.tinkerpop.blueprints.Direction.*,com.tinkerpop.blueprints.TransactionalGraph$Conclusion.*,com.tinkerpop.blueprints.Compare.*,com.thinkaurelius.titan.core.attribute.Geo.*,com.thinkaurelius.titan.core.attribute.Text.*,com.tinkerpop.blueprints.Query$Compare.*</static-imports>
+       <init-scripts>rexster-init.groovy</init-scripts>
+        </script-engine>
+    </script-engines>
+    <security>
+        <authentication>
+            <type>none</type>
+            <configuration>
+                <users>
+                    <user>
+                        <username>rexster</username>
+                        <password>rexster</password>
+                    </user>
+                </users>
+            </configuration>
+        </authentication>
+    </security>
+    <metrics>
+        <reporter>
+            <type>jmx</type>
+        </reporter>
+        <reporter>
+            <type>http</type>
+        </reporter>
+        <reporter>
+            <type>console</type>
+            <properties>
+                <rates-time-unit>SECONDS</rates-time-unit>
+                <duration-time-unit>SECONDS</duration-time-unit>
+                <report-period>10</report-period>
+                <report-time-unit>MINUTES</report-time-unit>
+                <includes>http.rest.*</includes>
+                <excludes>http.rest.*.delete</excludes>
+            </properties>
+        </reporter>
+    </metrics>
+    <graphs>
+<graph>
+  <graph-name>wikidata</graph-name>
+  
<graph-type>com.thinkaurelius.titan.tinkerpop.rexster.TitanGraphConfiguration</graph-type>
+  <graph-location></graph-location>
+  <graph-read-only>false</graph-read-only>
+  <properties>
+    <storage.backend>cassandrathrift</storage.backend>
+    <storage.hostname>localhost</storage.hostname>
+    <storage.buffer-size>2048</storage.buffer-size>
+    <cache.tx-dirty-size>2000</cache.tx-dirty-size>
+    
<storage.cassandra.thrift.frame-size>256</storage.cassandra.thrift.frame-size>
+       <index.search.backend>elasticsearch</index.search.backend>
+       
<index.search.elasticsearch.client-only>true</index.search.elasticsearch.client-only>
+       <query.force-index>true</query.force-index>
+       <query.smart-limit>true</query.smart-limit>
+       <tx.log-tx>true</tx.log-tx>
+       <tx.max-commit-time>10000</tx.max-commit-time>
+  </properties>
+  <extensions>
+    <allows>
+      <allow>tp:gremlin</allow>
+      <allow>tp-sample:*</allow>
+      <allow>tp:sparql</allow>
+    </allows>
+  </extensions>
+</graph>
+    </graphs>
+</rexster>
diff --git a/runit.groovy b/runit.groovy
new file mode 100644
index 0000000..a656fa6
--- /dev/null
+++ b/runit.groovy
@@ -0,0 +1,11 @@
+props = new org.apache.commons.configuration.PropertiesConfiguration()
+props.load("config.properties")
+//props.setProperty("storage.machine-id-appendix", index)
+g = TitanFactory.open(props)
+groovy.grape.Grape.grab(group:'org.wikidata', module:'gremlin', 
version:'0.0.1-SNAPSHOT')
+import org.wikidata.gremlin.*;
+w = org.wikidata.gremlin.ConsoleInit.init(this)
+propLoader = new org.wikidata.gremlin.DataLoader(g, false).failOnError(true)
+dataLoader = new org.wikidata.gremlin.DataLoader(g, true)
+batchLoader = new org.wikidata.gremlin.DataLoader(g, 
true).batch(true).failOnError(true)
+q = new org.wikidata.gremlin.QueryEngine(g)
diff --git a/runit.sh b/runit.sh
new file mode 100644
index 0000000..e351500
--- /dev/null
+++ b/runit.sh
@@ -0,0 +1,2 @@
+export INSTANCE=$1
+sh bin/gremlin.sh -l INFO runit.groovy 
diff --git a/src/main/java/org/wikidata/gremlin/TreePipe.java 
b/src/main/java/org/wikidata/gremlin/TreePipe.java
new file mode 100644
index 0000000..f4df445
--- /dev/null
+++ b/src/main/java/org/wikidata/gremlin/TreePipe.java
@@ -0,0 +1,47 @@
+package org.wikidata.gremlin;
+
+import java.util.NoSuchElementException;
+
+import org.apache.commons.lang.StringUtils;
+
+import com.tinkerpop.blueprints.Vertex;
+import com.tinkerpop.gremlin.groovy.Gremlin;
+import com.tinkerpop.pipes.AbstractPipe;
+import com.tinkerpop.pipes.Pipe;
+import com.tinkerpop.pipes.transform.TransformPipe;
+import com.tinkerpop.pipes.util.iterators.SingleIterator;
+
+public class TreePipe extends AbstractPipe<Vertex,Vertex> implements 
TransformPipe<Vertex, Vertex> {
+       public enum Direction {
+               IN, OUT
+       }
+
+       private Pipe<Vertex, Vertex> subtree = null;
+       private String[] props;
+       private Direction dir;
+
+       public TreePipe(Direction dir, String... props) {
+               if(props.length == 0) {
+                       throw new RuntimeException("Property list should not be 
empty");
+               }
+               this.props = props;
+               this.dir = dir;
+       }
+
+       @SuppressWarnings("unchecked")
+       public Vertex processNextStart() throws NoSuchElementException {
+               if(subtree == null) {
+                       Vertex v = this.starts.next();
+                       String propsList = StringUtils.join(props, "','");
+                       String dirCall = ((dir == 
Direction.IN)?"in":"out")+"('"+propsList+"')";
+                       String groovy = 
String.format("_().as('x').%s.loop('x'){it.object.%s.hasNext()}{true}.dedup()",
+                                       dirCall, dirCall);
+                       //System.out.println(groovy);
+                       subtree = Gremlin.compile(groovy);
+                       subtree.setStarts(new SingleIterator<Vertex>(v));
+                       return v;
+               } else {
+                       return subtree.next();
+               }
+       }
+}

-- 
To view, visit https://gerrit.wikimedia.org/r/183147
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I3347dc9367c0a2b8c6d70647d643d4ba21f7bc2b
Gerrit-PatchSet: 1
Gerrit-Project: wikidata/gremlin
Gerrit-Branch: master
Gerrit-Owner: Smalyshev <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to