snapshot-spawn
Spawn a process from a storage snapshot and continue to snapshot at regular intervals
Last updated a year ago by emilbayes .
UNLICENSED · Repository · Bugs · Original npm · Tarball · package.json
$ cnpm install snapshot-spawn 
SYNC missed versions from official npm registry.

snapshot-spawn

Build Status

Spawn a process from a storage snapshot and continue to snapshot at regular intervals

npm install @hyperdivision/snapshot-spawn

Usage

const Spawn = require('@hyperdivision/snapshot-spawn')
const Snapshot = require('@hyperdivision/s3-snapshot')
const S3 = require('s3-storage')

const s3 = new S3('fs://fake-s3')
const snapshot = new Snapshot('data', 'data-snapshot.tar', s3)

const s = new Spawn('node', ['-e', `
  let tick = 0

  try {
    tick = Number(fs.readFileSync('data/tick'), 'utf-8') || 0
  } catch (_) {}

  setInterval(function () {
    console.log('tick', tick++)
    if (!fs.existsSync('data')) fs.mkdirSync('data')
    fs.writeFileSync('data/tick', '' + tick)
  }, 1000)
`], {
  snapshot,
  interval: 3000
})

s.on('stdout', data => process.stdout.write(data))
s.on('stderr', data => process.stderr.write(data))

s.on('download', () => console.log('Downloading a snapshot'))
s.on('snapshot', () => console.log('Taking a snapshot'))

API

s = new Spawn(cmd, args, options)

Create a new instance.

  • cmd is the command you want to spawn.
  • args is the array of arguments you want to pass.

Options include

{
  snapshot: <s3-snapshot-instance>, // required
  interval: ..., // how often should it snapshot in ms? defaults to 24h
  rollbacks: 0 // how many rollback to previous versions should be attempted?
}

s.kill(signal)

Kill the process with a signal. Waits for a pending snapshot to finish.

s.pid

The PID of the running process.

s.on('stdout', data)

Emitted when there data from stdout.

s.on('stderr', data)

Emitted when there data from stderr.

s.on('error', err)

Emitted when a critical error happens.

s.on('exit', code)

Emitted when the process exits fully.

s.on('download')

Emitted when a snapshot is being downloaded.

s.on('snapshot')

Emitted when a snapshot is being performed. Before a snapshot happens your process will be killed with SIGTERM.

s.on('spawn')

Emitted when a process is spawned.

s.on('rollback')

Emitted when a rollback is attempted.

Spawn.ROLLBACK_CODE

Exit the process with this code (114) to attempt a rollback.

Current Tags

  • 1.0.1                                ...           latest (a year ago)

1 Versions

  • 1.0.1                                ...           a year ago
Maintainers (1)
Downloads
Today 0
This Week 0
This Month 0
Last Day 0
Last Week 0
Last Month 1
Dependencies (0)
None
Dev Dependencies (3)
Dependents (0)
None

Copyright 2014 - 2016 © taobao.org |