Beefy Boxes and Bandwidth Generously Provided by pair Networks
"be consistent"

Re: Net::OpenSSH premature session termination

by salva (Abbot)
on Dec 07, 2011 at 13:45 UTC ( #942247=note: print w/replies, xml ) Need Help??

in reply to Net::OpenSSH premature session termination

Probably, when the first thread exits, the DESTROY method is called for all the Net::OpenSSH objects effectively closing the connections.

Currently the module already has logic to support the case where the process is forked and the destructor is called from the child process so it shouldn't be too difficult to extend it to support the threads case as long as there is a method to detect it.

So, is there some easy way to detect when an object has been cloned in a new thread?

As a workaround, in the meantime, call the master_exited method for all Net::OpenSSH objects from every new thread.

Replies are listed 'Best First'.
Re^2: Net::OpenSSH premature session termination
by troy99 (Novice) on Dec 07, 2011 at 13:55 UTC

    Thanks for the reply Salva! Would this be at the SSH session creation time? Or when the threads are reaped? Should the master_exited call be here? As in:

    # For Net::OpenSSH need to specify whether to create # pipes or not, default is no pipes. my %opts; $opts{stdin_pipe} = 1; $opts{stdout_pipe} = 1; $opts{stderr_to_stdout} = 1; # Kick off the script on the remote machine ($ssh{'STDIN'}, $ssh{'STDOUT'}, undef, $ssh{'PID'}) = $ssh{'SSH'}->open_ex(\%opts, $script) or die "Error ".$ssh{$host}->error; $ssh{$host}->master_exited()
      no, you have to call it from inside the async block.

        Ah, OK, thanks!

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://942247]
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others making s'mores by the fire in the courtyard of the Monastery: (10)
As of 2017-07-20 13:38 GMT
Find Nodes?
    Voting Booth?
    I came, I saw, I ...

    Results (303 votes). Check out past polls.