[Vtigercrm-developers] Event Handler broken [Solved]
Alan Lord
alanslists at gmail.com
Fri Nov 30 02:23:14 PST 2012
On 29/11/12 17:22, Prasad wrote:
> Alan,
>
> Can you please share a test case / hint of reproducing the bug.
> If you have a setup where we can review that would useful too.
Hi Prasad,
I've been doing some more testing this morning.
This is how I'm registering the Event Handler:
require('include/events/include.inc');
require_once('include/utils/utils.php');
global $adb;
$em = new VTEventsManager($adb);
$em->unregisterHandler('CompaniesHandler');
$em->registerHandler('vtiger.entity.aftersave',
'modules/Companies/CompaniesHandler.php',
'CompaniesHandler',
"moduleName in ['Companies', 'Quotes', 'SalesOrder', 'Invoice']"
);
And it all seems fine in the vtiger_eventhandlers table. In the "cond"
field is the following text:
moduleName in ['Companies', 'Quotes', 'SalesOrder', 'Invoice']
I've tried replacing ' with ", removing ' and removing the [] but all
cause severe failures.
However with the cond string as above, saving an *Account* record fails
with the error described in my original post. And I don't think the
CompaniesHandler Class isn't even called. The log stops before it gets
there.
Here are the final few lines of the log file when this happens:
Fri Nov 30 10:06:40 2012,537 [7721] DEBUG index - Exiting is_admin
method ...
Fri Nov 30 10:06:40 2012,537 [7721] DEBUG index - Prepared sql query
being executed : select * from vtiger_ws_entity where name=?
Fri Nov 30 10:06:40 2012,537 [7721] DEBUG index - Prepared sql query
parameters : [Users]
Fri Nov 30 10:06:40 2012,538 [7721] DEBUG user - Entering Users() method ...
Fri Nov 30 10:06:40 2012,538 [7721] DEBUG index - Entering
getColumnFields(Users) method ...
Fri Nov 30 10:06:40 2012,538 [7721] DEBUG index - in getColumnFields Users
Fri Nov 30 10:06:40 2012,538 [7721] DEBUG index - Entering
getTabid(Users) method ...
Fri Nov 30 10:06:40 2012,538 [7721] DEBUG index - Exiting getTabid
method ...
Fri Nov 30 10:06:40 2012,539 [7721] DEBUG index - Exiting
getColumnFields method ...
Fri Nov 30 10:06:40 2012,539 [7721] DEBUG user - Exiting Users() method ...
Fri Nov 30 10:06:40 2012,539 [7721] DEBUG index - Entering
getTabid(Users) method ...
Fri Nov 30 10:06:40 2012,539 [7721] DEBUG index - Exiting getTabid
method ...
Fri Nov 30 10:06:40 2012,539 [7721] DEBUG index - Prepared sql query
being executed : select * from vtiger_users where id=? and deleted=0 and
status='Active'
Fri Nov 30 10:06:40 2012,539 [7721] DEBUG index - Prepared sql query
parameters : [1]
Fri Nov 30 10:06:40 2012,540 [7721] DEBUG index - Prepared sql query
being executed : select groupname from vtiger_groups where groupid = ?
Fri Nov 30 10:06:40 2012,540 [7721] DEBUG index - Prepared sql query
parameters : [1]
Fri Nov 30 10:06:40 2012,540 [7721] DEBUG index - Prepared sql query
being executed : select first_name from vtiger_users where id = ?
Fri Nov 30 10:06:40 2012,540 [7721] DEBUG index - Prepared sql query
parameters : [1]
Fri Nov 30 10:06:40 2012,541 [7721] DEBUG index - Prepared sql query
being executed : select name from vtiger_ws_entity where id=?
Fri Nov 30 10:06:40 2012,541 [7721] DEBUG index - Prepared sql query
parameters : [11]
Fri Nov 30 10:06:40 2012,542 [7721] INFO VT - PearDatabase ->ADODB
getColumnNames table=com_vtiger_workflows
Fri Nov 30 10:06:40 2012,543 [7721] DEBUG index - Prepared sql query
being executed : select workflow_id, module_name, summary, test,
execution_condition, defaultworkflow, type
from com_vtiger_workflows where module_name=?
Fri Nov 30 10:06:40 2012,543 [7721] DEBUG index - Prepared sql query
parameters : [Accounts]
Fri Nov 30 10:06:40 2012,544 [7721] DEBUG index - Prepared sql query
being executed : SELECT * FROM com_vtiger_workflow_activatedonce
WHERE
entity_id=? and workflow_id=?
Fri Nov 30 10:06:40 2012,544 [7721] DEBUG index - Prepared sql query
parameters : [14,2]
Fri Nov 30 10:06:40 2012,545 [7721] DEBUG index - Prepared sql query
being executed : SELECT * FROM com_vtiger_workflowtasks
INNER JOIN
com_vtiger_workflowtask_queue
ON
com_vtiger_workflowtasks.task_id= com_vtiger_workflowtask_queue.task_id
WHERE
workflow_id=? AND entity_id=?
Fri Nov 30 10:06:40 2012,545 [7721] DEBUG index - Prepared sql query
parameters : [2,14]
(That final query returns an empty result set)
And that is it. It stops there with the:
Fatal error: Uncaught exception 'Exception' with message 'Deadlock
occured for events: CompaniesHandler' in
/var/www/vtigercrm/include/events/VTEventTrigger.inc:155 Stack trace: #0
/var/www/vtigercrm/include/events/VTEventsManager.inc(118):
VTEventTrigger->trigger(Object(VTEntityData)) #1
/var/www/vtigercrm/data/CRMEntity.php(812):
VTEventsManager->triggerEvent('vtiger.entity.a...',
Object(VTEntityData)) #2
/var/www/vtigercrm/modules/Accounts/Save.php(103):
CRMEntity->save('Accounts') #3 /var/www/vtigercrm/index.php(749):
include('/var/www/vtigercrm/mo...') #4 {main} thrown in
/var/www/vtigercrm/include/events/VTEventTrigger.inc on line 155
Removing the string entirely from the "cond" field and everything works
again.
hope that helps.
Al
--
Libertus Solutions
http://www.libertus.co.uk
More information about the vtigercrm-developers
mailing list