Re: [GENERAL] Perl script is killed by SIGPIPE

2017-09-13 Thread tirveni yadav
On Wed, Sep 13, 2017 at 11:04 AM, Yogesh Sharma  wrote:
> Dear Daniel,
> Yes , we are using DBI for connection.
>
> Basically we observed that after dbh->do() return nothing if we are trying
> to insert duplicate entry.
> But it is not occurred always.
> It return exit 1 if try to insert duplicate entry into Db.
> But sometime it return nothing and child script is killed.
>
> On Tuesday, September 12, 2017, Daniel Verite 
> wrote:
>>
>> Yogesh Sharma wrote:
>>
>> > We have found child script is killed by signal 13 SIGPIPE. When
>> > duplicate
>> > key violates error occured, script is killed but not all time.
>>
>> "child script" and this kind of error suggests that a forked process
>> inherits a database connection opened by a parent process.
>>
>> When the database handle goes out of scope, it might
>> close the connection to the database, affecting the
>> parent process too, since it's the same connection.
>>
>> If you're using DBI, it has a setting to avoid that issue:
>> https://metacpan.org/pod/DBI#InactiveDestroy
>>
>> Aside from that, inherited connections can't be used
>> simultaneously by parent and child process.
>> In general, a child process should open and close
>> its own connection.
>>
>> Best regards,
>> --
>> Daniel Vérité
>> PostgreSQL-powered mailer: http://www.manitou-mail.org
>> Twitter: @DanielVerite


Yes, running your code under try-catch might help you in diagnosing the issue.
Example:

#--
use TryCatch;

try
  {
  $rs_foo->insert($href_zoo);
  }
catch($error)
{
 print "Error: $error \n";
};

#--

-- 
Regards,

Tirveni Yadav
www.udyansh.org
www.bael.io

What is this Universe ? From what it arises ? Into what does it go?
In freedom it arises, In freedom it rests and into freedom it melts away.
Upanishads.


-- 
Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general


Re: [GENERAL] Perl script is killed by SIGPIPE

2017-09-12 Thread Yogesh Sharma
Dear Daniel,
Yes , we are using DBI for connection.

Basically we observed that after dbh->do() return nothing if we are trying
to insert duplicate entry.
But it is not occurred always.
It return exit 1 if try to insert duplicate entry into Db.
But sometime it return nothing and child script is killed.

On Tuesday, September 12, 2017, Daniel Verite 
wrote:

> Yogesh Sharma wrote:
>
> > We have found child script is killed by signal 13 SIGPIPE. When duplicate
> > key violates error occured, script is killed but not all time.
>
> "child script" and this kind of error suggests that a forked process
> inherits a database connection opened by a parent process.
>
> When the database handle goes out of scope, it might
> close the connection to the database, affecting the
> parent process too, since it's the same connection.
>
> If you're using DBI, it has a setting to avoid that issue:
> https://metacpan.org/pod/DBI#InactiveDestroy
>
> Aside from that, inherited connections can't be used
> simultaneously by parent and child process.
> In general, a child process should open and close
> its own connection.
>
> Best regards,
> --
> Daniel Vérité
> PostgreSQL-powered mailer: http://www.manitou-mail.org
> Twitter: @DanielVerite
>


Re: [GENERAL] Perl script is killed by SIGPIPE

2017-09-12 Thread
> Daniel Verite wrote:
> > Yogesh Sharma wrote:
> 
> > We have found child script is killed by signal 13 SIGPIPE. When 
> > duplicate key violates error occured, script is killed but not all time.
> 
> "child script" and this kind of error suggests that a forked process inherits 
> a database connection opened by a parent process.
> 
> When the database handle goes out of scope, it might close the connection to 
> the database, affecting the parent process too, since it's the same 
> connection.
> 
> If you're using DBI, it has a setting to avoid that issue:
> https://metacpan.org/pod/DBI#InactiveDestroy
> 
> Aside from that, inherited connections can't be used simultaneously by parent 
> and child process.
> In general, a child process should open and close its own connection.

In addition to Daniel's advice, be sure you have a try/catch around your DB 
work. If you've never used
something like that, check out Try::Tiny. Then in the catch, you can print 
$dbh->errstr() to see what's
really going on.

I think Daniel has it correct though that you may not have a valid $dbh, so 
this is an app error.

HTH,
Kevin


-- 
Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general


Re: [GENERAL] Perl script is killed by SIGPIPE

2017-09-12 Thread Daniel Verite
Yogesh Sharma wrote:

> We have found child script is killed by signal 13 SIGPIPE. When duplicate
> key violates error occured, script is killed but not all time.

"child script" and this kind of error suggests that a forked process
inherits a database connection opened by a parent process.

When the database handle goes out of scope, it might
close the connection to the database, affecting the
parent process too, since it's the same connection.

If you're using DBI, it has a setting to avoid that issue:
https://metacpan.org/pod/DBI#InactiveDestroy

Aside from that, inherited connections can't be used
simultaneously by parent and child process.
In general, a child process should open and close
its own connection.

Best regards,
-- 
Daniel Vérité
PostgreSQL-powered mailer: http://www.manitou-mail.org
Twitter: @DanielVerite


-- 
Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general


Re: [GENERAL] Perl script is killed by SIGPIPE

2017-09-12 Thread Vick Khera
On Mon, Sep 11, 2017 at 9:02 PM, Yogesh Sharma 
wrote:

> Dear All,
>
>
> We have one perl script that is opening DB connection and performaing
> insert DB operation.When duplicate entry Comming in query,Postgres
> forecfully killing process itself and in Postgres log "unexpected EOF on
> client connection" error is Comming.
> This issue is not Comming every time.
> We have found child script is killed by signal 13 SIGPIPE. When duplicate
> key violates error occured, script is killed but not all time.
>
>
I'm going to bet that the SIGPIPE is totally unrelated to having a
duplicate key violation. You will need to provide much more detail of what
you observe to figure this out.


[GENERAL] Perl script is killed by SIGPIPE

2017-09-11 Thread Yogesh Sharma
>
> Dear All,


We have one perl script that is opening DB connection and performaing
insert DB operation.When duplicate entry Comming in query,Postgres
forecfully killing process itself and in Postgres log "unexpected EOF on
client connection" error is Comming.
This issue is not Comming every time.
We have found child script is killed by signal 13 SIGPIPE. When duplicate
key violates error occured, script is killed but not all time.

Thanks in advance.

Yogesh