Nas backup restore fails if the backup repository mount options have a trailing space
- Linguagem predominante
- Java
- Estrelas
- 3.1k
- Forks
- 1.4k
- Merge médio
- 6d 19h
- PRs com merge (30d)
- 32
Descrição
### problem
Backup works because mount options are processed inside the shell script `nasbackup.sh` where trailing spaces are not a problem.
But restore (`LibvirtRestoreBackupCommandWrapper`) builds and runs mount in Java
```
if (StringUtils.isNotBlank(mountOptions)) {
mountCmd.add("-o");
mountCmd.add(mountOptions);
}
Script.executeCommand(mountCmd.toArray(new String[0]));
```
Script.executeCommand(String...) builds a ProcessBuilder argument list
mount receives the literal -o "vers=4.1 ". libmount splits options only on commas, so the trailing blank stays glued to the last option, and mount.nfs/the kernel rejects it as a malformed or unknown option ("an incorrect mount option was specified").
`WARN utils.script.Script (logid:435302bd) Process [445800] for command [sudo /usr/bin/mount -t nfs encountered the error: [mount.nfs: an incorrect mount option was specified for /usr/share/cloudstack-agent/tmp/csbackup...`
### versions
ACS 4.22.1
### The steps to reproduce the bug
1. Create a backup repository - specify mount options (`vers=4.1 `) with a trailing space
2. Create backup
3. Restore backup - it fails
...
### What to do about it?
Trim trailing whitespaces before using the mount options
Guia de contribuição
Direção de pesquisa
Comece em LibvirtRestoreBackupCommandWrapper e inspecione como mountOptions é passado para Script.executeCommand; compare isso com o tratamento do shell em nasbackup.sh. Reproduza a restauração usando uma opção de repositório com espaços em branco à direita e, em seguida, verifique se a restauração é bem-sucedida e se o comportamento existente do comando de montagem permanece intacto.
Escrita pelo modelo de indexação a partir do texto da issue.
Avaliação
- Stack de tecnologia
- java, shell
- Domínio
- backend, infrastructure
- Tipo de issue
- Bug
- Dificuldade
- 2/5
- Tempo estimado
- 1-3 horas
- Status de atividade
- Ativa
- Clareza
- Claramente especificada
- Facilidade para iniciantes
- 76/100