#1595: Event listener preConnect does not always trigger
------------------------+---------------------------------------------------
Reporter: demc | Owner: jwage
Type: defect | Status: new
Priority: minor | Milestone: 1.0.4
Component: Listeners | Version: 1.0.3
Resolution: | Keywords: preconnect event listener
Has_test: 0 | Mystatus: Pending Core Response
Has_patch: 0 |
------------------------+---------------------------------------------------
Changes (by jwage):
* milestone: => 1.0.4
Old description:
> From symfony trac as requested by JW.
>
> I have event listener DatabaseConnectionListener.class.php
>
> {{{
> <?php
>
> class DatabaseConnectionListener extends Doctrine_EventListener
> {
> public function preConnect(Doctrine_Event $event)
> {
> $invoker = $event->getInvoker();
>
> $invoker->setOption('username',
> Tools::decrypt($invoker->getOption('username')));
> $invoker->setOption('password',
> Tools::decrypt($invoker->getOption('password')));
> }
> }
> }}}
>
> which is registered in config/doctrine.yml as
>
> {{{
> all:
> listeners: [DatabaseConnectionListener]
> }}}
>
> and it works as expected almost all the time. The problem is that it
> doesn't trigger when '''./symfony doctrine:rebuild-db --force frontend'''
> is called but it does work when calling '''./symfony doctrine:build-sql
> frontend'''
>
> So both tasks connect to DB but rebuild-db doesn't trigger preConnect
> event - consequently in my case doctrine fails to connect to DB coz u/p
> from database.yml are not decrypted.
>
> ----
>
> By JW:
> ''The problem here is actually a problem with Doctrine. The issue is that
> the rebuild-db task drops the database, and recreates it. To do this, the
> connection is used to drop the database and the connection is destroyed
> and recreated with the newly created database, since the connection is
> destroyed and recreated, it doesn't maintain anything it had attached to
> it. Can you create a ticket for this in the Doctrine trac?
> ''
New description:
From symfony trac as requested by JW.
I have event listener DatabaseConnectionListener.class.php
{{{
<?php
class DatabaseConnectionListener extends Doctrine_EventListener
{
public function preConnect(Doctrine_Event $event)
{
$invoker = $event->getInvoker();
$invoker->setOption('username',
Tools::decrypt($invoker->getOption('username')));
$invoker->setOption('password',
Tools::decrypt($invoker->getOption('password')));
}
}
}}}
which is registered in config/doctrine.yml as
{{{
all:
listeners: [DatabaseConnectionListener]
}}}
and it works as expected almost all the time. The problem is that it
doesn't trigger when '''./symfony doctrine:rebuild-db --force frontend'''
is called but it does work when calling '''./symfony doctrine:build-sql
frontend'''
So both tasks connect to DB but rebuild-db doesn't trigger preConnect
event - consequently in my case doctrine fails to connect to DB coz u/p
from database.yml are not decrypted.
----
By JW:
''The problem here is actually a problem with Doctrine. The issue is that
the rebuild-db task drops the database, and recreates it. To do this, the
connection is used to drop the database and the connection is destroyed
and recreated with the newly created database, since the connection is
destroyed and recreated, it doesn't maintain anything it had attached to
it. Can you create a ticket for this in the Doctrine trac?
''
--
Ticket URL: <http://trac.doctrine-project.org/ticket/1595#comment:2>
Doctrine <http://www.phpdoctrine.org>
PHP Doctrine Object Relational Mapper
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"doctrine-svn" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.co.uk/group/doctrine-svn?hl=en-GB
-~----------~----~----~----~------~----~------~--~---