Skip to content

Commit

Permalink
feat: always log and display full remote errors
Browse files Browse the repository at this point in the history
  • Loading branch information
julien-f committed May 31, 2022
1 parent 08772e3 commit d62de93
Show file tree
Hide file tree
Showing 6 changed files with 15 additions and 16 deletions.
1 change: 0 additions & 1 deletion @xen-orchestra/fs/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,6 @@
"promise-toolbox": "^0.21.0",
"proper-lockfile": "^4.1.2",
"readable-stream": "^3.0.6",
"serialize-error": "^8.0.0",
"through2": "^4.0.2",
"xo-remote-parser": "^0.8.0"
},
Expand Down
4 changes: 1 addition & 3 deletions @xen-orchestra/fs/src/abstract.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ import { limitConcurrency } from 'limit-concurrency-decorator'
import { parse } from 'xo-remote-parser'
import { pipeline } from 'stream'
import { randomBytes } from 'crypto'
import { serializeError } from 'serialize-error'
import { synchronized } from 'decorator-synchronized'

import { basename, dirname, normalize as normalizePath } from './_path'
Expand Down Expand Up @@ -366,8 +365,7 @@ export default class RemoteHandlerAbstract {
success: false,
step,
file: testFileName,
// ensure even non serializeable errors are displayed
error: error.message || JSON.stringify(serializeError(error)),
error,
}
} finally {
ignoreErrors.call(this._unlink(testFileName))
Expand Down
9 changes: 8 additions & 1 deletion packages/xo-server/src/models/remote.mjs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import Collection from '../collection/redis.mjs'
import Model from '../model.mjs'
import { forEach } from '../utils.mjs'
import { forEach, serializeError } from '../utils.mjs'

import { parseProp } from './utils.mjs'

Expand All @@ -18,6 +18,7 @@ export class Remotes extends Collection {
forEach(remotes, remote => {
remote.benchmarks = parseProp('remote', remote, 'benchmarks')
remote.enabled = remote.enabled === 'true'
remote.error = parseProp('remote', remote, 'error')
})
return remotes
}
Expand All @@ -29,6 +30,12 @@ export class Remotes extends Collection {
if (benchmarks !== undefined) {
remote.benchmarks = JSON.stringify(benchmarks)
}

const { error } = remote
if (error !== undefined) {
remote.error = JSON.stringify(typeof error === 'object' ? serializeError(error) : error)
}

return remote
})
)
Expand Down
6 changes: 3 additions & 3 deletions packages/xo-server/src/xo-mixins/remotes.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -74,9 +74,9 @@ export default class {

try {
await handler.sync()
ignoreErrors.call(this._updateRemote(id, { error: '' }))
ignoreErrors.call(this._updateRemote(id, { error: null }))
} catch (error) {
ignoreErrors.call(this._updateRemote(id, { error: error.message }))
ignoreErrors.call(this._updateRemote(id, { error }))
throw error
}

Expand All @@ -103,7 +103,7 @@ export default class {
writeRate,
}
await this._updateRemote(remoteId, {
error: '',
error: null,
benchmarks:
remote.benchmarks !== undefined
? [...remote.benchmarks.slice(-49), benchmark] // store 50 benchmarks
Expand Down
4 changes: 3 additions & 1 deletion packages/xo-web/src/xo-app/settings/remotes/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -29,11 +29,13 @@ import {

import Remote from './remote'

const formatLog = error => (typeof error === 'string' ? error : JSON.stringify(error, null, 2).replace(/\\n/g, '\n'))

const _changeUrlElement = (value, { remote, element }) =>
editRemote(remote, {
url: format({ ...remote, [element]: value === null ? undefined : value }),
})
const _showError = remote => alert(_('remoteConnectionFailed'), remote.error)
const _showError = remote => alert(_('remoteConnectionFailed'), <pre>{formatLog(remote.error)}</pre>)
const _editRemoteName = (name, { remote }) => editRemote(remote, { name })
const _editRemoteOptions = (options, { remote }) => editRemote(remote, { options: options !== '' ? options : null })

Expand Down
7 changes: 0 additions & 7 deletions yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -16389,13 +16389,6 @@ [email protected]:
range-parser "~1.2.1"
statuses "2.0.1"

serialize-error@^8.0.0:
version "8.1.0"
resolved "https://registry.yarnpkg.com/serialize-error/-/serialize-error-8.1.0.tgz#3a069970c712f78634942ddd50fbbc0eaebe2f67"
integrity sha512-3NnuWfM6vBYoy5gZFvHiYsVbafvI9vZv/+jlIigFn4oP4zjNPK3LhcY0xSCgeb1a5L8jO71Mit9LlNoi2UfDDQ==
dependencies:
type-fest "^0.20.2"

serialize-javascript@^3.1.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-3.1.0.tgz#8bf3a9170712664ef2561b44b691eafe399214ea"
Expand Down

0 comments on commit d62de93

Please sign in to comment.