forked from twitter-archive/flockdb
-
Notifications
You must be signed in to change notification settings - Fork 1
/
EdgesDatabase.scala
61 lines (54 loc) · 2.6 KB
/
EdgesDatabase.scala
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
package com.twitter.flockdb.test
import com.twitter.querulous.query.SqlQueryFactory
import com.twitter.querulous.evaluator.StandardQueryEvaluatorFactory
import net.lag.configgy.{ConfigMap, Configgy}
import com.twitter.gizzard.nameserver.Forwarding
import com.twitter.gizzard.shards.{Busy, ShardId, ShardInfo}
import com.twitter.gizzard.test.NameServerDatabase
trait EdgesDatabase extends NameServerDatabase {
def reset(flock: FlockDB) {
try {
reset(Configgy.config.configMap("edges"))
val config = Configgy.config.configMap("db")
config.update("database", Configgy.config("edges.db_name"))
config.update("hostname", "localhost")
val queryEvaluator = evaluator(config)
for (graph <- (1 until 10)) {
val forwardShardId = ShardId("localhost", "forward_" + graph)
val backwardShardId = ShardId("localhost", "backward_" + graph)
flock.nameServer.createShard(ShardInfo(forwardShardId,
"com.twitter.flockdb.SqlShard", "INT UNSIGNED", "INT UNSIGNED", Busy.Normal))
flock.nameServer.createShard(ShardInfo(backwardShardId,
"com.twitter.flockdb.SqlShard", "INT UNSIGNED", "INT UNSIGNED", Busy.Normal))
queryEvaluator.execute("DELETE FROM forward_" + graph + "_edges")
queryEvaluator.execute("DELETE FROM forward_" + graph + "_metadata")
queryEvaluator.execute("DELETE FROM backward_" + graph + "_edges")
queryEvaluator.execute("DELETE FROM backward_" + graph + "_metadata")
val replicatingForwardShardId = ShardId("localhost", "replicating_forward_" + graph)
val replicatingBackwardShardId = ShardId("localhost", "replicating_backward_" + graph)
flock.nameServer.createShard(ShardInfo(replicatingForwardShardId,
"com.twitter.gizzard.shards.ReplicatingShard", "", "", Busy.Normal))
flock.nameServer.createShard(ShardInfo(replicatingBackwardShardId,
"com.twitter.gizzard.shards.ReplicatingShard", "", "", Busy.Normal))
flock.nameServer.addLink(replicatingForwardShardId, forwardShardId, 1)
flock.nameServer.addLink(replicatingBackwardShardId, backwardShardId, 1)
flock.nameServer.setForwarding(Forwarding(graph, 0, replicatingForwardShardId))
flock.nameServer.setForwarding(Forwarding(-1 * graph, 0, replicatingBackwardShardId))
}
flock.nameServer.reload()
} catch {
case e =>
e.printStackTrace()
throw e
}
}
def reset(config: ConfigMap, db: String) {
try {
rootEvaluator(config).execute("DROP DATABASE IF EXISTS " + db)
} catch {
case e =>
e.printStackTrace()
throw e
}
}
}