feat(backups/cleanVm): improve log messages

Introduced byc0b0ba433
This commit is contained in:
Julien Fontanet 2022-07-28 17:53:54 +02:00
parent 10c77ba3cc
commit 19208472e6

View File

@ -55,12 +55,17 @@ async function mergeVhdChain(chain, { handler, logInfo, remove, merge }) {
const children = chainCopy
if (merge) {
logInfo(`merging children into parent`, { childrenCount: children.length, parent })
logInfo('will merge children into parent', { children, parent })
let done, total
const handle = setInterval(() => {
if (done !== undefined) {
logInfo(`merging children in progress`, { children, parent, doneCount: done, totalCount: total })
logInfo('merge in progress', {
done,
parent,
progress: Math.round((100 * done) / total),
total,
})
}
}, 10e3)
@ -122,15 +127,15 @@ async function checkAliases(
{ handler, logInfo = noop, logWarn = console.warn, remove = false }
) {
const aliasFound = []
for (const path of aliasPaths) {
const target = await resolveVhdAlias(handler, path)
for (const alias of aliasPaths) {
const target = await resolveVhdAlias(handler, alias)
if (!isVhdFile(target)) {
logWarn('alias references non VHD target', { path, target })
logWarn('alias references non VHD target', { alias, target })
if (remove) {
logInfo('removing alias and non VHD target', { path, target })
logInfo('removing alias and non VHD target', { alias, target })
await handler.unlink(target)
await handler.unlink(path)
await handler.unlink(alias)
}
continue
}
@ -143,13 +148,13 @@ async function checkAliases(
// error during dispose should not trigger a deletion
}
} catch (error) {
logWarn('missing or broken alias target', { target, path, error })
logWarn('missing or broken alias target', { alias, target, error })
if (remove) {
try {
await VhdAbstract.unlink(handler, path)
await VhdAbstract.unlink(handler, alias)
} catch (error) {
if (error.code !== 'ENOENT') {
logWarn('error deleting alias target', { target, path, error })
logWarn('error deleting alias target', { alias, target, error })
}
}
}
@ -159,17 +164,17 @@ async function checkAliases(
aliasFound.push(resolve('/', target))
}
const entries = await handler.list(targetDataRepository, {
const vhds = await handler.list(targetDataRepository, {
ignoreMissing: true,
prependDir: true,
})
entries.forEach(async entry => {
if (!aliasFound.includes(entry)) {
logWarn('no alias references VHD', { entry })
vhds.forEach(async path => {
if (!aliasFound.includes(path)) {
logWarn('no alias references VHD', { path })
if (remove) {
logInfo('deleting unaliased VHD')
await VhdAbstract.unlink(handler, entry)
logInfo('deleting unused VHD', { path })
await VhdAbstract.unlink(handler, path)
}
}
})
@ -225,7 +230,7 @@ exports.cleanVm = async function cleanVm(
logWarn(`should delete ${duplicate._path}`)
vhds.delete(duplicate._path)
} else {
logWarn(`same ids but different content`)
logWarn('same ids but different content')
}
} else {
logInfo('not duplicate', UUID.stringify(vhd.footer.uuid), path)
@ -236,7 +241,7 @@ exports.cleanVm = async function cleanVm(
vhds.delete(path)
logWarn('VHD check error', { path, error })
if (error?.code === 'ERR_ASSERTION' && remove) {
logInfo('deleting broken path', { path })
logInfo('deleting broken VHD', { path })
return VhdAbstract.unlink(handler, path)
}
}
@ -284,9 +289,9 @@ exports.cleanVm = async function cleanVm(
if (!vhds.has(parent)) {
vhds.delete(vhdPath)
logWarn('parent VHD is missing', { parent, vhdPath })
logWarn('parent VHD is missing', { parent, child: vhdPath })
if (remove) {
logInfo('deleting orphan VHD', { vhdPath })
logInfo('deleting orphan VHD', { path: vhdPath })
deletions.push(VhdAbstract.unlink(handler, vhdPath))
}
}
@ -337,7 +342,7 @@ exports.cleanVm = async function cleanVm(
try {
metadata = JSON.parse(await handler.readFile(json))
} catch (error) {
logWarn('failed to read metadata file', { json, error })
logWarn('failed to read backup metadata', { path: json, error })
jsons.delete(json)
return
}
@ -348,9 +353,9 @@ exports.cleanVm = async function cleanVm(
if (xvas.has(linkedXva)) {
unusedXvas.delete(linkedXva)
} else {
logWarn('metadata XVA is missing', { json })
logWarn('the XVA linked to the backup is missing', { backup: json, xva: linkedXva })
if (remove) {
logInfo('deleting incomplete backup', { json })
logInfo('deleting incomplete backup', { path: json })
jsons.delete(json)
await handler.unlink(json)
}
@ -371,9 +376,9 @@ exports.cleanVm = async function cleanVm(
vhdsToJSons[path] = json
})
} else {
logWarn('some metadata VHDs are missing', { json, missingVhds })
logWarn('some VHDs linked to the backup are missing', { backup: json, missingVhds })
if (remove) {
logInfo('deleting incomplete backup', { json })
logInfo('deleting incomplete backup', { path: json })
jsons.delete(json)
await handler.unlink(json)
}
@ -414,9 +419,9 @@ exports.cleanVm = async function cleanVm(
}
}
logWarn('unused VHD', { vhd })
logWarn('unused VHD', { path: vhd })
if (remove) {
logInfo('deleting unused VHD', { vhd })
logInfo('deleting unused VHD', { path: vhd })
unusedVhdsDeletion.push(VhdAbstract.unlink(handler, vhd))
}
}
@ -497,11 +502,15 @@ exports.cleanVm = async function cleanVm(
// don't warn if the size has changed after a merge
if (!merged && fileSystemSize !== size) {
logWarn('incorrect size in metadata', { size: size ?? 'none', fileSystemSize })
logWarn('incorrect backup size in metadata', {
path: metadataPath,
actual: size ?? 'none',
expected: fileSystemSize,
})
}
}
} catch (error) {
logWarn('failed to get metadata size', { metadataPath, error })
logWarn('failed to get backup size', { backup: metadataPath, error })
return
}
@ -511,7 +520,7 @@ exports.cleanVm = async function cleanVm(
try {
await handler.writeFile(metadataPath, JSON.stringify(metadata), { flags: 'w' })
} catch (error) {
logWarn('metadata size update failed', { metadataPath, error })
logWarn('failed to update backup size in metadata', { path: metadataPath, error })
}
}
})