Page MenuHomePhabricator

getEmailConflicts Return value must be of type array, null returned
Closed, ResolvedPublic

Description

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

Event Timeline

Change #1214159 had a related patch set uploaded (by Eileen; author: Eileen):

[wikimedia/fundraising/crm@master] Move logging of dedupe to deduper

https://gerrit.wikimedia.org/r/1214159

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

https://gerrit.wikimedia.org/r/1214164

Change #1214159 merged by Eileen:

[wikimedia/fundraising/crm@master] Move logging of dedupe to deduper

https://gerrit.wikimedia.org/r/1214159

Change #1214203 had a related patch set uploaded (by Eileen; author: Eileen):

[wikimedia/fundraising/crm@master] Handle conflict on snooze_date

https://gerrit.wikimedia.org/r/1214203

Change #1214164 merged by jenkins-bot:

[wikimedia/fundraising/crm@master] Refresh prev_next cache in batch mode

https://gerrit.wikimedia.org/r/1214164

Change #1214203 merged by jenkins-bot:

[wikimedia/fundraising/crm@master] Handle conflict on snooze_date

https://gerrit.wikimedia.org/r/1214203

XenoRyet set Final Story Points to 4.