init-repl.js 948 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. (function () {
  2. const rsName = 'rs0';
  3. const host = 'box-mongodb:27017';
  4. const j = (x) => {
  5. try {
  6. return JSON.stringify(x);
  7. } catch (e) {
  8. return String(x);
  9. }
  10. };
  11. try {
  12. const st = rs.status();
  13. if (st && st.ok === 1) {
  14. print('[init-rs] Replica set already initialized. ok=1');
  15. quit(0);
  16. }
  17. } catch (e) {
  18. // not initialized yet => continue
  19. }
  20. const cfg = { _id: rsName, members: [{ _id: 0, host }] };
  21. try {
  22. const res = rs.initiate(cfg);
  23. print('[init-rs] rs.initiate:', j(res));
  24. } catch (e) {
  25. print('[init-rs] rs.initiate error:', String(e));
  26. }
  27. // wait for ok
  28. for (let i = 0; i < 60; i++) {
  29. try {
  30. const st2 = rs.status();
  31. if (st2 && st2.ok === 1) {
  32. print('[init-rs] Replica set OK. status:', j(st2));
  33. quit(0);
  34. }
  35. } catch (e) {}
  36. sleep(1000);
  37. }
  38. print('[init-rs] Replica set NOT OK after timeout');
  39. quit(1);
  40. })();