Ejegg has uploaded a new change for review. ( https://gerrit.wikimedia.org/r/398134 )
Change subject: Debugging for mystery FK errors ...................................................................... Debugging for mystery FK errors Change-Id: I29da014cc25bac75540d84f94e68e5cbe19ea0c0 --- M sites/all/modules/wmf_civicrm/wmf_civicrm.module M sites/all/modules/wmf_common/WmfDatabase.php 2 files changed, 28 insertions(+), 3 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/wikimedia/fundraising/crm refs/changes/34/398134/1 diff --git a/sites/all/modules/wmf_civicrm/wmf_civicrm.module b/sites/all/modules/wmf_civicrm/wmf_civicrm.module index 746c901..184cedc 100644 --- a/sites/all/modules/wmf_civicrm/wmf_civicrm.module +++ b/sites/all/modules/wmf_civicrm/wmf_civicrm.module @@ -1193,6 +1193,9 @@ } } + if (WmfDatabase::isNativeTxnRolledBack()) { + throw new WmfException("IMPORT_CONTACT", "Native txn rolled back before inserting contact"); + } // Attempt to insert the contact try { $contact_result = civicrm_api3( "Contact", "Create", $contact ); @@ -1201,6 +1204,10 @@ } else { watchdog( 'wmf_civicrm', 'Result for updating contact: %contact', array( '%contact' => print_r( $contact_result, true )), WATCHDOG_DEBUG ); } + + if (WmfDatabase::isNativeTxnRolledBack()) { + throw new WmfException("IMPORT_CONTACT", "Native txn rolled back after inserting contact"); + } } catch ( CiviCRM_API3_Exception $ex ) { throw new WmfException( "IMPORT_CONTACT", @@ -1297,7 +1304,9 @@ throw new WmfException( 'IMPORT_CONTACT', $ex->getMessage() ); } } - + if (WmfDatabase::isNativeTxnRolledBack()) { + throw new WmfException("IMPORT_CONTACT", "Native txn rolled back after inserting contact auxiliary fields"); + } return $contact_result; } @@ -1433,6 +1442,9 @@ */ function wmf_civicrm_message_location_insert( $msg, $contact ) { wmf_civicrm_message_email_insert( $msg, $contact[ 'id' ] ); + if (WmfDatabase::isNativeTxnRolledBack()) { + throw new WmfException("IMPORT_CONTACT", "Native txn rolled back after inserting email"); + } wmf_civicrm_message_address_insert( $msg, $contact[ 'id' ] ); } @@ -1644,7 +1656,9 @@ if (!wmf_civicrm_is_address_valid($address_params)) { return; } - + if (WmfDatabase::isNativeTxnRolledBack()) { + throw new WmfException("IMPORT_CONTACT", "Native txn rolled back before inserting address"); + } try { civicrm_api3('Address', 'Create', $address_params); } @@ -1655,6 +1669,10 @@ $ex->getMessage() ); } + + if (WmfDatabase::isNativeTxnRolledBack()) { + throw new WmfException("IMPORT_CONTACT", "Native txn rolled back after inserting address"); + } } function wmf_civicrm_get_default_location_type_id() { diff --git a/sites/all/modules/wmf_common/WmfDatabase.php b/sites/all/modules/wmf_common/WmfDatabase.php index d52dddf..75aa028 100644 --- a/sites/all/modules/wmf_common/WmfDatabase.php +++ b/sites/all/modules/wmf_common/WmfDatabase.php @@ -1,6 +1,8 @@ <?php //TODO: namespace +use Civi\Core\Transaction\Manager; + class WmfDatabase { /** * Multiple-database transaction around your callback. @@ -27,7 +29,7 @@ // Detect if anything has marked the native Civi transaction for // rollback, and do not proceed if so. - if (\Civi\Core\Transaction\Manager::singleton()->getFrame()->isRollbackOnly()) { + if (self::isNativeTxnRolledBack()) { throw new RuntimeException( 'Civi Transaction was marked for rollback and Exception was suppressed' ); @@ -48,4 +50,9 @@ unset( $drupal_transaction ); return $result; } + + public static function isNativeTxnRolledBack() { + $frame = Manager::singleton()->getFrame(); + return $frame && $frame->isRollbackOnly(); + } } -- To view, visit https://gerrit.wikimedia.org/r/398134 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I29da014cc25bac75540d84f94e68e5cbe19ea0c0 Gerrit-PatchSet: 1 Gerrit-Project: wikimedia/fundraising/crm Gerrit-Branch: deployment Gerrit-Owner: Ejegg <ej...@ejegg.com> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits