diff options
author | redmatrix <git@macgirvin.com> | 2016-05-31 16:16:54 -0700 |
---|---|---|
committer | redmatrix <git@macgirvin.com> | 2016-05-31 16:16:54 -0700 |
commit | 00b4843425371e4ff55c82be577a279e248c29fc (patch) | |
tree | 8294725983c67e3eb82314a127ac646b88a222eb | |
parent | 701acf59e2b2264f7afec9fdfab4d554193fd0b3 (diff) | |
download | volse-hubzilla-00b4843425371e4ff55c82be577a279e248c29fc.tar.gz volse-hubzilla-00b4843425371e4ff55c82be577a279e248c29fc.tar.bz2 volse-hubzilla-00b4843425371e4ff55c82be577a279e248c29fc.zip |
provide a sort of mutex lock around db logging so it can't possibly recurse. Previous attempts to do something similar using other methods haven't worked out satisfactorily.
-rwxr-xr-x | include/dba/dba_driver.php | 7 | ||||
-rwxr-xr-x | include/plugin.php | 21 |
2 files changed, 18 insertions, 10 deletions
diff --git a/include/dba/dba_driver.php b/include/dba/dba_driver.php index 0ab5830ed..df072ed76 100755 --- a/include/dba/dba_driver.php +++ b/include/dba/dba_driver.php @@ -12,7 +12,7 @@ class DBA { static public $dba = null; static public $dbtype = null; - + static public $logging = false; /** * @brief Returns the database driver object. @@ -421,8 +421,13 @@ function db_getfunc($f) { function db_logger($s,$level = LOGGER_NORMAL,$syslog = LOG_INFO) { + if(\DBA::$logging) + return; + $saved = \DBA::$dba->debug; \DBA::$dba->debug = false; + \DBA::$logging = true; logger($s,$level,$syslog); + \DBA::$logging = false; \DBA::$dba->debug = $saved; }
\ No newline at end of file diff --git a/include/plugin.php b/include/plugin.php index 96ae0e543..be4e92f03 100755 --- a/include/plugin.php +++ b/include/plugin.php @@ -300,15 +300,18 @@ function call_hooks($name, &$data = null) { $func($data); else $func($a, $data); - } else { - // The hook should be removed so we don't process it. - // But not until everybody gets through a timing issue - // related to git pull and update_r1169 - // q("DELETE FROM hook WHERE hook = '%s' AND file = '%s' AND fn = '%s'", - // dbesc($name), - // dbesc($hook[0]), - // dbesc($origfn) - // ); + } + else { + + // Don't do any DB write calls if we're currently logging a possibly failed DB call. + if(! DBA::$logging) { + // The hook should be removed so we don't process it. + q("DELETE FROM hook WHERE hook = '%s' AND file = '%s' AND fn = '%s'", + dbesc($name), + dbesc($hook[0]), + dbesc($origfn) + ); + } } } } |