Skip to content

Same Job (write file to SFTP) triggered more than once from Redis queue connection #37183

Closed
@Rafeethu

Description

@Rafeethu
  • Laravel Version: 6.20.24

  • PHP Version: 7.4.12

  • Database Driver & Version: mysql 8

  • machine : AWS EC2 ubuntu 20.04

Description:

I'm using a Job to write two files to SFTP path. My queue driver is redis which is monitored by supervisor. once in a while when
I trigger the job from controller, the relevant Job is triggered more than once simultaneously which causes some error in writing content to SFTP path and it fails.

The content is not written to path.

My EC2 instance is in aws Canada region and writing to a SFTP server in Singapore region.

The controller which triggers the job.

dispatch(new \App\Jobs\GeneratePdf($file, Auth::id(), $xml_content));

In the Job I have set public $timeout = 60 * 60;

i'm passing the content via parameter. pls see the que log below.

[2021-04-21 13:37:50][IqtRktkpROMBFqBuVPdTooZnMob4RsiC] Processed:  App\Jobs\UpdateAssetVersionFileChecksum
[2021-04-21 13:43:04][adfOBwZvIg30V7HEKGmBFSo7DBaxqaL2] Processing: App\Jobs\GeneratePdf
[2021-04-21 13:43:06][adfOBwZvIg30V7HEKGmBFSo7DBaxqaL2] Processed:  App\Jobs\GeneratePdf
[2021-04-21 13:46:17][cQ6bmeChk9iEXeWWoc4Kk7ZLwqfZZzk9] Processing: App\Jobs\GeneratePdf
[2021-04-21 13:46:20][cQ6bmeChk9iEXeWWoc4Kk7ZLwqfZZzk9] Processed:  App\Jobs\GeneratePdf
[2021-04-21 14:47:31][RUfQNpfSQq6dVa0Ca1sxyaWA9G2LGlv4] Processing: App\Jobs\GeneratePdf
[2021-04-21 14:47:31][RUfQNpfSQq6dVa0Ca1sxyaWA9G2LGlv4] Processing: App\Jobs\GeneratePdf
[2021-04-21 14:47:37][RUfQNpfSQq6dVa0Ca1sxyaWA9G2LGlv4] Processed:  App\Jobs\GeneratePdf
[2021-04-21 14:48:28][Jyj2Pl2wLHZylPGfCbRBnhf79X9wUkgn] Processing: App\Jobs\CopyPdfFromFtpToDam
[2021-04-21 14:48:41][Jyj2Pl2wLHZylPGfCbRBnhf79X9wUkgn] Processed:  App\Jobs\CopyPdfFromFtpToDam
[2021-04-21 14:50:13][kf6teizlLWPEWUMXW1NdaaPIdUpgeIV5] Processing: App\Jobs\GeneratePdf
[2021-04-21 14:50:13][kf6teizlLWPEWUMXW1NdaaPIdUpgeIV5] Processing: App\Jobs\GeneratePdf
[2021-04-21 14:50:19][kf6teizlLWPEWUMXW1NdaaPIdUpgeIV5] Processed:  App\Jobs\GeneratePdf
[2021-04-21 14:51:04][8A7JkCOtMVgJPbh76jLKGureb93FeyKs] Processing: App\Jobs\CopyPdfFromFtpToDam
[2021-04-21 14:51:18][8A7JkCOtMVgJPbh76jLKGureb93FeyKs] Processed:  App\Jobs\CopyPdfFromFtpToDam
[2021-04-21 14:53:29][KDgb3aCRYBkMwWokFflugfeTDQd9R2k4] Processing: App\Jobs\GeneratePdf
[2021-04-21 14:53:30][KDgb3aCRYBkMwWokFflugfeTDQd9R2k4] Processing: App\Jobs\GeneratePdf
[2021-04-21 14:53:35][KDgb3aCRYBkMwWokFflugfeTDQd9R2k4] Processed:  App\Jobs\GeneratePdf
[2021-04-21 14:54:23][OocZLXI2ZAtHth8e0oi1EXr8378O4ga0] Processing: App\Jobs\CopyPdfFromFtpToDam
[2021-04-21 14:54:37][OocZLXI2ZAtHth8e0oi1EXr8378O4ga0] Processed:  App\Jobs\CopyPdfFromFtpToDam
[2021-04-21 14:57:39][EZlKqJ5u0IhF9CObeXMBtlxPR8Km4uQZ] Processing: App\Jobs\GeneratePdf
[2021-04-21 14:57:41][EZlKqJ5u0IhF9CObeXMBtlxPR8Km4uQZ] Processed:  App\Jobs\GeneratePdf
[2021-04-21 14:58:27][Oy6FESFMbg0R495l065CJwCD8UUNesE3] Processing: App\Jobs\CopyPdfFromFtpToDam
[2021-04-21 14:58:40][Oy6FESFMbg0R495l065CJwCD8UUNesE3] Processed:  App\Jobs\CopyPdfFromFtpToDam
[2021-04-21 15:06:29][fJvhpp2kKMzdAMfMnHWUlZQi4DsLDgPI] Processing: App\Jobs\GeneratePdf
[2021-04-21 15:06:32][fJvhpp2kKMzdAMfMnHWUlZQi4DsLDgPI] Processed:  App\Jobs\GeneratePdf

in this you can see that ques with id RUfQNpfSQq6dVa0Ca1sxyaWA9G2LGlv4, kf6teizlLWPEWUMXW1NdaaPIdUpgeIV5 etc are triggered twice and marked as processed only once but it's thrown some SFTP connection closed prematurely error and the file is not written to SFTP path.

After this error normally the SFTP is not working until I restart the queue, I'm unable to find any clue on what's causing this issue.

If it's a SFTP writing issue why the job is not marked as failed

Pls find the error log when this error occurs.

[2021-04-29 07:04:44] local.ERROR: Connection closed prematurely {"exception":"[object] (ErrorException(code: 0): Connection closed prematurely at /var/www/dam-demo/vendor/phpseclib/phpseclib>
[stacktrace]
#0 [internal function]: Illuminate\Foundation\Bootstrap\HandleExceptions->handleError()
#1 /var/www/dam-demo/vendor/phpseclib/phpseclib/phpseclib/Net/SSH2.php(3368): user_error()
#2 /var/www/dam-demo/vendor/phpseclib/phpseclib/phpseclib/Net/SSH2.php(3479): phpseclib\Net\SSH2->_get_binary_packet()
#3 /var/www/dam-demo/vendor/phpseclib/phpseclib/phpseclib/Net/SSH2.php(3454): phpseclib\Net\SSH2->_filter()
#4 /var/www/dam-demo/vendor/phpseclib/phpseclib/phpseclib/Net/SSH2.php(3479): phpseclib\Net\SSH2->_get_binary_packet()
#5 /var/www/dam-demo/vendor/phpseclib/phpseclib/phpseclib/Net/SSH2.php(3454): phpseclib\Net\SSH2->_filter()
#6 /var/www/dam-demo/vendor/phpseclib/phpseclib/phpseclib/Net/SSH2.php(3479): phpseclib\Net\SSH2->_get_binary_packet()
#7 /var/www/dam-demo/vendor/phpseclib/phpseclib/phpseclib/Net/SSH2.php(3454): phpseclib\Net\SSH2->_filter()
#8 /var/www/dam-demo/vendor/phpseclib/phpseclib/phpseclib/Net/SSH2.php(3479): phpseclib\Net\SSH2->_get_binary_packet()
#9 /var/www/dam-demo/vendor/phpseclib/phpseclib/phpseclib/Net/SSH2.php(3454): phpseclib\Net\SSH2->_filter()
#10 /var/www/dam-demo/vendor/phpseclib/phpseclib/phpseclib/Net/SSH2.php(3479): phpseclib\Net\SSH2->_get_binary_packet()
#11 /var/www/dam-demo/vendor/phpseclib/phpseclib/phpseclib/Net/SSH2.php(3454): phpseclib\Net\SSH2->_filter()
#12 /var/www/dam-demo/vendor/phpseclib/phpseclib/phpseclib/Net/SSH2.php(3479): phpseclib\Net\SSH2->_get_binary_packet()
#13 /var/www/dam-demo/vendor/phpseclib/phpseclib/phpseclib/Net/SSH2.php(3454): phpseclib\Net\SSH2->_filter()
....
....
#240 /var/www/dam-demo/vendor/phpseclib/phpseclib/phpseclib/Net/SSH2.php(3454): phpseclib\Net\SSH2->_filter()
#241 /var/www/dam-demo/vendor/phpseclib/phpseclib/phpseclib/Net/SSH2.php(3479): phpseclib\Net\SSH2->_get_binary_packet()
#242 /var/www/dam-demo/vendor/phpseclib/phpseclib/phpseclib/Net/SSH2.php(3454): phpseclib\Net\SSH2->_filter()
#243 /var/www/dam-demo/vendor/phpseclib/phpseclib/phpseclib/Net/SSH2.php(3479): phpseclib\Net\SSH2->_get_binary_packet()
#244 /var/www/dam-demo/vendor/phpseclib/phpseclib/phpseclib/Net/SSH2.php(3454): phpseclib\Net\SSH2->_filter()
#245 /var/www/dam-demo/vendor/phpseclib/phpseclib/phpseclib/Net/SSH2.php(3725): phpseclib\Net\SSH2->_get_binary_packet()
#246 /var/www/dam-demo/vendor/phpseclib/phpseclib/phpseclib/Net/SFTP.php(3073): phpseclib\Net\SSH2->_get_channel_packet()
#247 /var/www/dam-demo/vendor/phpseclib/phpseclib/phpseclib/Net/SFTP.php(1391): phpseclib\Net\SFTP->_get_sftp_packet()
#248 /var/www/dam-demo/vendor/phpseclib/phpseclib/phpseclib/Net/SFTP.php(1280): phpseclib\Net\SFTP->_stat()
#249 /var/www/dam-demo/vendor/league/flysystem-sftp/src/SftpAdapter.php(548): phpseclib\Net\SFTP->stat()
#250 /var/www/dam-demo/vendor/league/flysystem-sftp/src/SftpAdapter.php(539): League\Flysystem\Sftp\SftpAdapter->getMetadata()
#251 /var/www/dam-demo/vendor/league/flysystem/src/Filesystem.php(57): League\Flysystem\Sftp\SftpAdapter->has()
#252 /var/www/dam-demo/vendor/league/flysystem/src/Filesystem.php(98): League\Flysystem\Filesystem->has()
#253 /var/www/dam-demo/vendor/laravel/framework/src/Illuminate/Filesystem/FilesystemAdapter.php(225): League\Flysystem\Filesystem->put()

Steps To Reproduce:

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