Nas backup restore fails if the backup repository mount options have a trailing space

Aberta Para iniciantes
#14,013 0 comentários 0 reações 0 responsáveis Ver no GitHub

Ninguém assumiu esta issue ainda.

Avaliação

Dificuldade
2/5
Tempo estimado
1-3 horas
Facilidade para iniciantes
76/100
Tipo de issue
Bug
Clareza
Claramente especificada
Status de atividade
Ativa
Stack de tecnologia
java, shell

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.

Descrição

component:backup
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 <redacted> 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

Linguagem predominante
Java
Estrelas
3.1k
Forks
1.4k
Merge médio
7d 5h
PRs com merge (30d)
28

Guia de contribuição

Abrir o guia de contribuição

Primeiros passos

  1. Leia a issue inteira e depois o guia de contribuição do projeto.
  2. Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
  3. Faça um fork do repositório e trabalhe em uma branch.
  4. Abra um pull request que referencie o número da issue.

Mais de apache/cloudstack

Todas as issues de apache/cloudstack

Issues semelhantes

Mais issues de Java

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.