BUG #5066: plperl issues with perl_destruct() and END blocks
От | Tim Bunce |
---|---|
Тема | BUG #5066: plperl issues with perl_destruct() and END blocks |
Дата | |
Msg-id | 200909191921.n8JJLfGN052323@wwwmaster.postgresql.org обсуждение исходный текст |
Ответы |
Re: BUG #5066: plperl issues with perl_destruct() and END blocks
|
Список | pgsql-bugs |
The following bug has been logged online: Bug reference: 5066 Logged by: Tim Bunce Email address: Tim.Bunce@pobox.com PostgreSQL version: 8.4.1 Operating system: darwin Description: plperl issues with perl_destruct() and END blocks Details: The plperl implementation doesn't call perl_destruct() during server shutdown. So any resources held by references, in %_SHARED for example, are not properly freed. The perl interpreter never gets a chance to cleanup, it's simply discarded. Related to the above, plperl should also set PL_exit_flags |= PERL_EXIT_DESTRUCT_END. Currently any END blocks defined during initialization get executed at initialization (just before perl_run() returns). Any END blocks defined later never get run. Setting PL_exit_flags |= PERL_EXIT_DESTRUCT_END in plperl_init_interp() and calling perl_destruct() will fix the issue. The timing of the perl_destruct() call (i.e., early or late in the shutdown sequence) doesn't matter much. You might want to make the spi_* functions return an error if there's a shutdown in progress.
В списке pgsql-bugs по дате отправления: