Skip to content

并行备份,第一个先完成会删除backup-temp\temp\manifest.txt,导致第二个失败 #812

@deeprado

Description

@deeprado

Parallel backup, the first completion will delete backup-temp\temp\manifest.txt, resulting in the second failure.
Exception information:

Starting backup...
Determining files to backup...
Backup failed because file_put_contents(D:\Projects\phpstorm\blog3\storage\app/backup-temp\temp\manifest.txt): failed to open stream: No such file
or directory.
#0 [internal function]: Illuminate\Foundation\Bootstrap\HandleExceptions->handleError(2, 'file_put_conten...', 'D:\Projects\php...', 43, Array)
#1 D:\Projects\phpstorm\blog3\vendor\spatie\laravel-backup\src\Tasks\Backup\Manifest.php(43): file_put_contents('D:\Projects\php...', 'D:\Proje
cts\php...', 8)
#2 D:\Projects\phpstorm\blog3\vendor\spatie\laravel-backup\src\Tasks\Backup\BackupJob.php(172): Spatie\Backup\Tasks\Backup\Manifest->addFiles(Obje
ct(Generator))
#3 D:\Projects\phpstorm\blog3\vendor\spatie\laravel-backup\src\Tasks\Backup\BackupJob.php(142): Spatie\Backup\Tasks\Backup\BackupJob->createBackup
Manifest()
#4 D:\Projects\phpstorm\blog3\vendor\spatie\laravel-backup\src\Commands\BackupCommand.php(52): Spatie\Backup\Tasks\Backup\BackupJob->run()
#5 [internal function]: Spatie\Backup\Commands\BackupCommand->handle()
#6 D:\Projects\phpstorm\blog3\vendor\laravel\framework\src\Illuminate\Container\BoundMethod.php(29): call_user_func_array(Array, Array)
#7 D:\Projects\phpstorm\blog3\vendor\laravel\framework\src\Illuminate\Container\BoundMethod.php(87): Illuminate\Container\BoundMethod::Illuminate
Container{closure}()
#8 D:\Projects\phpstorm\blog3\vendor\laravel\framework\src\Illuminate\Container\BoundMethod.php(31): Illuminate\Container\BoundMethod::callBoundMe
thod(Object(Illuminate\Foundation\Application), Array, Object(Closure))
#9 D:\Projects\phpstorm\blog3\vendor\laravel\framework\src\Illuminate\Container\Container.php(572): Illuminate\Container\BoundMethod::call(Object(
Illuminate\Foundation\Application), Array, Array, NULL)
#10 D:\Projects\phpstorm\blog3\vendor\laravel\framework\src\Illuminate\Console\Command.php(183): Illuminate\Container\Container->call(Array)
#11 D:\Projects\phpstorm\blog3\vendor\symfony\console\Command\Command.php(255): Illuminate\Console\Command->execute(Object(Symfony\Component\Conso
le\Input\ArgvInput), Object(Illuminate\Console\OutputStyle))
#12 D:\Projects\phpstorm\blog3\vendor\laravel\framework\src\Illuminate\Console\Command.php(170): Symfony\Component\Console\Command\Command->run(Ob
ject(Symfony\Component\Console\Input\ArgvInput), Object(Illuminate\Console\OutputStyle))
#13 D:\Projects\phpstorm\blog3\vendor\spatie\laravel-backup\src\Commands\BaseCommand.php(16): Illuminate\Console\Command->run(Object(Symfony\Compo
nent\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#14 D:\Projects\phpstorm\blog3\vendor\symfony\console\Application.php(886): Spatie\Backup\Commands\BaseCommand->run(Object(Symfony\Component\Conso
le\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#15 D:\Projects\phpstorm\blog3\vendor\symfony\console\Application.php(262): Symfony\Component\Console\Application->doRunCommand(Object(Spatie\Back
up\Commands\BackupCommand), Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#16 D:\Projects\phpstorm\blog3\vendor\symfony\console\Application.php(145): Symfony\Component\Console\Application->doRun(Object(Symfony\Component
Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#17 D:\Projects\phpstorm\blog3\vendor\laravel\framework\src\Illuminate\Console\Application.php(89): Symfony\Component\Console\Application->run(Obj
ect(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#18 D:\Projects\phpstorm\blog3\vendor\laravel\framework\src\Illuminate\Foundation\Console\Kernel.php(122): Illuminate\Console\Application->run(Obj
ect(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#19 D:\Projects\phpstorm\blog3\artisan(37): Illuminate\Foundation\Console\Kernel->handle(Object(Symfony\Component\Console\Input\ArgvInput), Object
(Symfony\Component\Console\Output\ConsoleOutput))
#20 {main}
Backup failed because: file_put_contents(D:\Projects\phpstorm\blog3\storage\app/backup-temp\temp\manifest.txt): failed to open stream: No such fil
e or directory.

suggestion:
Generate a unique temporary file for each operation to distinguish or disable parallel operations (join locks)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions