Created
August 14, 2013 20:40
-
-
Save oroce/6235349 to your computer and use it in GitHub Desktop.
trying to do some multi-master sync with election
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
//master1.js | |
var level = require("level"); | |
var SubLevel = require("level-sublevel"); | |
var net = require("net"); | |
var reconnect = require("reconnect-net"); | |
var Replicate = require("level-replicate"); | |
//setup the database. | |
var db = SubLevel(level("./example-master")); | |
//install Master plugin! | |
var master = Replicate(db, "master", "MASTER-1"); | |
var server = net.createServer(function (stream) { | |
stream.pipe(master.createStream({tail: true})).pipe(stream); | |
}).on( "listening", function () { | |
console.log("[master1] master db listening on %s", server.address().port ); | |
}).on( "close", function(){ | |
console.log( "[master1] closing server" ); | |
}); | |
reconnect(function( stream ){ | |
stream.pipe(master.createStream({tail: true})).pipe(stream); | |
}) | |
.on( "error", function( err ){ | |
console.error( err ); | |
}) | |
.on( "disconnect", function(){ | |
if( !server._handle ){ | |
console.log( "it's closed, start acting as master" ); | |
server.listen( 9999 ); | |
} | |
}) | |
.on( "connect", function(){ | |
if( server._handle ){ | |
console.log("[master1] server is listening trying to close" ); | |
return server.close(); | |
} | |
console.log( "[master1] server isn't listening...and working as slave" ); | |
}) | |
.connect( 9998 ); |
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
//master2.js | |
var level = require("level"); | |
var SubLevel = require("level-sublevel"); | |
var net = require("net"); | |
var Replicate = require("level-replicate"); | |
var reconnect = require("reconnect-net"); | |
var db = SubLevel(level("./example-slave")); | |
var master = Replicate(db, "master", "MASTER-2"); | |
var server = net.createServer(function (stream) { | |
stream.pipe(master.createStream({tail: true})).pipe(stream); | |
}).on( "listening", function () { | |
console.log("[master2] master db listening on %s", server.address().port ); | |
}).on( "close", function(){ | |
console.log( "[master2] closing server" ); | |
}); | |
reconnect(function( stream ){ | |
stream.pipe(master.createStream({tail: true})).pipe(stream); | |
}) | |
.on( "error", function( err ){ | |
console.error( err ); | |
}) | |
.on( "disconnect", function(){ | |
if( !server._handle ){ | |
console.log( "it's closed, start acting as master" ); | |
server.listen( 9998 ); | |
} | |
}) | |
.on( "connect", function(){ | |
if( server._handle ){ | |
console.log("[master2] server is listening trying to close" ); | |
return server.close(); | |
} | |
console.log( "[master2] server isn't listening...and working as slave" ); | |
}) | |
.connect( 9999 ); | |
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
{ | |
"name": "level-replicate-mm", | |
"version": "0.0.0", | |
"description": "ERROR: No README.md file found!", | |
"main": "index.js", | |
"scripts": { | |
"test": "echo \"Error: no test specified\" && exit 1" | |
}, | |
"repository": "", | |
"author": "", | |
"license": "BSD", | |
"dependencies": { | |
"level-replicate": "~1.1.6", | |
"level-sublevel": "~5.0.1", | |
"level": "~0.13.0", | |
"leveldown": "~0.7.0", | |
"levelup": "~0.13.0", | |
"reconnect-core": "0.0.0", | |
"reconnect-net": "0.0.0" | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment