Queue item from batch_merge with id=6874971 failed with exception="CRM_Deduper_BAO_MergeHandler::getEmailConflicts(): Return value must be of type array, null returned", aborted and moved to the dedicated damaged queue
Description
Details
Related Objects
Event Timeline
Change #1214159 had a related patch set uploaded (by Eileen; author: Eileen):
[wikimedia/fundraising/crm@master] Move logging of dedupe to deduper
I'm having trouble determining the dedupe pair in question - I think it's cached in the prevnext table - I've put up a patch to try to output the pair being merged before the attempt starts to get the contact ID. I need to also check when the table is flushed....
echo '{"criteria":{"where":[["modified_date","BETWEEN",["2025-12-01 20:29:41","2025-12-01 21:29:41"]]]},"search_limit":0}' | wmf-cv -vv --in=json api Job.process_batch_merge
Entity: Job
Action: process_batch_merge
Params: {
"version": 3,
"criteria": {
"where": [
[
"modified_date",
"BETWEEN",
[
"2025-12-01 20:29:41",
"2025-12-01 21:29:41"
]
]
]
},
"search_limit": 0,
"debug": 1}
[PHP Warning] Undefined array key "fields" at /srv/org.wikimedia.civicrm/ext/deduper/CRM/Deduper/BAO/MergeHandler.php:817
In MergeHandler.php line 817:
[TypeError] CRM_Deduper_BAO_MergeHandler::getEmailConflicts(): Return value must be of type array, null returned
Exception trace:
at /srv/org.wikimedia.civicrm/ext/deduper/CRM/Deduper/BAO/MergeHandler.php:817
CRM_Deduper_BAO_MergeHandler->getEmailConflicts() at /srv/org.wikimedia.civicrm/ext/deduper/CRM/Deduper/BAO/Resolver.php:150
CRM_Deduper_BAO_Resolver->getEmailConflicts() at /srv/org.wikimedia.civicrm/ext/deduper/CRM/Deduper/BAO/Resolver/BooleanYesResolver.php:23
CRM_Deduper_BAO_Resolver_BooleanYesResolver->resolveConflicts() at /srv/org.wikimedia.civicrm/ext/deduper/CRM/Deduper/BAO/MergeHandler.php:476
CRM_Deduper_BAO_MergeHandler->resolve() at /srv/org.wikimedia.civicrm/ext/deduper/deduper.php:288
deduper_civicrm_merge() at /srv/org.wikimedia.civicrm/core/CRM/Utils/Hook.php:288
CRM_Utils_Hook->runHooks() at /srv/org.wikimedia.civicrm/core/CRM/Utils/Hook.php:194
CRM_Utils_Hook->commonInvoke() at /srv/org.wikimedia.civicrm/core/CRM/Utils/Hook/Standalone.php:43
CRM_Utils_Hook_Standalone->invokeViaUF() at /srv/org.wikimedia.civicrm/core/Civi/Core/CiviEventDispatcher.php:326
Civi\Core\CiviEventDispatcher::delegateToUF() at /srv/org.wikimedia.civicrm/vendor/symfony/event-dispatcher/EventDispatcher.php:206
Symfony\Component\EventDispatcher\EventDispatcher->callListeners() at /srv/org.wikimedia.civicrm/vendor/symfony/event-dispatcher/EventDispatcher.php:56
Symfony\Component\EventDispatcher\EventDispatcher->dispatch() at /srv/org.wikimedia.civicrm/core/Civi/Core/CiviEventDispatcher.php:263
Civi\Core\CiviEventDispatcher->dispatch() at /srv/org.wikimedia.civicrm/core/CRM/Utils/Hook.php:168
CRM_Utils_Hook->invoke() at /srv/org.wikimedia.civicrm/core/CRM/Utils/Hook.php:1550
CRM_Utils_Hook::merge() at /srv/org.wikimedia.civicrm/core/CRM/Dedupe/Merger.php:2178
CRM_Dedupe_Merger::getConflicts() at /srv/org.wikimedia.civicrm/core/CRM/Dedupe/Merger.php:1116
CRM_Dedupe_Merger::skipMerge() at /srv/org.wikimedia.civicrm/core/CRM/Dedupe/Merger.php:1910
CRM_Dedupe_Merger::dedupePair() at /srv/org.wikimedia.civicrm/core/CRM/Dedupe/Merger.php:1056
CRM_Dedupe_Merger::merge() at /srv/org.wikimedia.civicrm/core/CRM/Dedupe/Merger.php:891
CRM_Dedupe_Merger::batchMerge() at /srv/org.wikimedia.civicrm/core/api/v3/Job.php:555
civicrm_api3_job_process_batch_merge() at /srv/org.wikimedia.civicrm/core/Civi/API/Provider/MagicFunctionProvider.php:89
Civi\API\Provider\MagicFunctionProvider->invoke() at /srv/org.wikimedia.civicrm/core/Civi/API/Kernel.php:153
Civi\API\Kernel->runRequest() at /srv/org.wikimedia.civicrm/core/Civi/API/Kernel.php:79
Civi\API\Kernel->runSafe() at /srv/org.wikimedia.civicrm/core/api/api.php:28
civicrm_api() at /srv/cv/src/Command/ApiCommand.php:69
Civi\Cv\Command\ApiCommand->execute() at /srv/cv/vendor/symfony/console/Command/Command.php:298
Symfony\Component\Console\Command\Command->run() at /srv/cv/vendor/symfony/console/Application.php:1040
Symfony\Component\Console\Application->doRunCommand() at /srv/cv/vendor/symfony/console/Application.php:301
Symfony\Component\Console\Application->doRun() at /srv/cv/lib/src/BaseApplication.php:137
Civi\Cv\BaseApplication->doRun() at /srv/cv/vendor/symfony/console/Application.php:171
Symfony\Component\Console\Application->run() at /srv/cv/lib/src/BaseApplication.php:87
Civi\Cv\BaseApplication->run() at /srv/cv/lib/src/BaseApplication.php:32
Civi\Cv\BaseApplication::main() at /srv/cv/bin/cv:34
- but if I change the time range by even 1 second it works - which makes me think the cached selection is the issue
Change #1214164 had a related patch set uploaded (by Eileen; author: Eileen):
[wikimedia/fundraising/crm@master] Refresh prev_next cache in batch mode
Change #1214159 merged by Eileen:
[wikimedia/fundraising/crm@master] Move logging of dedupe to deduper
Change #1214203 had a related patch set uploaded (by Eileen; author: Eileen):
[wikimedia/fundraising/crm@master] Handle conflict on snooze_date
Change #1214164 merged by jenkins-bot:
[wikimedia/fundraising/crm@master] Refresh prev_next cache in batch mode
Change #1214203 merged by jenkins-bot:
[wikimedia/fundraising/crm@master] Handle conflict on snooze_date