Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix(core-forger): properly exit if no forgers are configured #1294

Merged
merged 5 commits into from Nov 6, 2018
Merged
Show file tree
Hide file tree
Changes from 4 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
5 changes: 0 additions & 5 deletions packages/core-forger/__tests__/manager.test.js
Expand Up @@ -33,11 +33,6 @@ describe('Forger Manager', () => {
expect(forgeManager.loadDelegates).toBeFunction()
})

it('should throw an error without configured delegates', async () => {
forgeManager.secrets = null
await expect(forgeManager.loadDelegates()).rejects.toThrowError('No delegate found')
})

it('should be ok with configured delegates', async () => {
let secret = 'a secret'
forgeManager.secrets = [secret]
Expand Down
13 changes: 11 additions & 2 deletions packages/core-forger/lib/index.js
Expand Up @@ -14,6 +14,11 @@ exports.plugin = {
const forgerManager = new ForgerManager(options)
const forgers = await forgerManager.loadDelegates(options.bip38, options.password)

if (!forgers) {
container.resolvePlugin('logger').info('Forger is disabled :grey_exclamation:')
return
}

// Don't keep bip38 password in memory
delete process.env.ARK_FORGER_PASSWORD
delete options.password
Expand All @@ -25,8 +30,12 @@ exports.plugin = {
return forgerManager
},
async deregister (container, options) {
container.resolvePlugin('logger').info('Stopping Forger Manager')
const forger = container.resolvePlugin('forger')

if (forger) {
container.resolvePlugin('logger').info('Stopping Forger Manager')

await container.resolvePlugin('forger').stop()
return forger.stop()
}
}
}
5 changes: 3 additions & 2 deletions packages/core-forger/lib/manager.js
Expand Up @@ -31,8 +31,9 @@ module.exports = class ForgerManager {
* @return {Array}
*/
async loadDelegates (bip38, password) {
if (!bip38 && !this.secrets) {
throw new Error('No delegate found')
if (!bip38 && (!this.secrets || !this.secrets.length || !Array.isArray(this.secrets))) {
logger.warn('No delegate found! Please check your "delegates.json" file and try again.')
return
}

this.delegates = this.secrets.map(passphrase => new Delegate(passphrase, this.network, password))
Expand Down