This fatal error happened on a specific mail record during a migration on a very old (October 2014) instance of Phabricator. The first 20k or so mail migrated just fine. Not sure what was different or how many were actually affected.
Applying patch 'phabricator:20150622.metamta.5.actor-phid-mig.php'...
```
[2015-08-23 10:38:12] EXCEPTION: (InvalidArgumentException) Argument 1 passed to idx() must be of the type array, null given, called in /src/applications/metamta/storage/PhabricatorMetaMTAMail.php on line 72 and defined at [<phutil>/src/error/PhutilErrorHandler.php:200]
arcanist(head=master, ref.master=957fbd76bbb9), phabricator(head=master, ref.master=d13bcddb6029), phutil(head=master, ref.master=e276f31b7117)
#0 PhutilErrorHandler::handleError(integer, string, string, integer, array) called at [<phutil>/src/utils/utils.php:36]
#1 idx(NULL, string, NULL) called at [<phabricator>/src/applications/metamta/storage/PhabricatorMetaMTAMail.php:72]
#2 PhabricatorMetaMTAMail::getParam(string) called at [<phabricator>/src/applications/metamta/storage/PhabricatorMetaMTAMail.php:228]
#3 PhabricatorMetaMTAMail::getFrom() called at [<phabricator>/resources/sql/autopatches/20150622.metamta.5.actor-phid-mig.php:15]
#4 require_once(string) called at [<phabricator>/src/infrastructure/storage/management/PhabricatorStorageManagementAPI.php:226]
#5 PhabricatorStorageManagementAPI::applyPatchPHP(string) called at [<phabricator>/src/infrastructure/storage/management/PhabricatorStorageManagementAPI.php:191]
#6 PhabricatorStorageManagementAPI::applyPatch(PhabricatorStoragePatch) called at [<phabricator>/src/infrastructure/storage/management/workflow/PhabricatorStorageManagementUpgr
adeWorkflow.php:190]
#7 PhabricatorStorageManagementUpgradeWorkflow::execute(PhutilArgumentParser) called at [<phutil>/src/parser/argument/PhutilArgumentParser.php:406]
#8 PhutilArgumentParser::parseWorkflowsFull(array) called at [<phutil>/src/parser/argument/PhutilArgumentParser.php:301]
#9 PhutilArgumentParser::parseWorkflows(array) called at [<phabricator>/scripts/sql/manage_storage.php:176]
```
My temp fix was to check if $this->parameters is an array, and if not return the default:
```
protected function getParam($param, $default = null) {
- return idx($this->parameters, $param, $default);
+ if (is_array($this->parameters)) {
+ return idx($this->parameters, $param, $default);
+ }
+ return $default;
}
```