diff --git a/modules/salesforce_pull/src/DeleteHandler.php b/modules/salesforce_pull/src/DeleteHandler.php index a281fb3f1bdfae6952945a3290f4e80b2d316644..bf7a3058d3c5bc42a2df4c01d547be7ac73a0a75 100644 --- a/modules/salesforce_pull/src/DeleteHandler.php +++ b/modules/salesforce_pull/src/DeleteHandler.php @@ -123,15 +123,17 @@ class DeleteHandler { $now = time(); // getDeleted() constraint: startDate must be at least one minute // greater than endDate. - $now = $now > $last_delete_sync + 60 ? $now : $now + 60; + $now_sf = $now > $last_delete_sync + 60 ? $now : $now + 60; // getDeleted() constraint: startDate cannot be more than 30 days ago. if ($last_delete_sync < strtotime('-29 days')) { $last_delete_sync = strtotime('-29 days'); } $last_delete_sync_sf = gmdate('Y-m-d\TH:i:s\Z', $last_delete_sync); - $now_sf = gmdate('Y-m-d\TH:i:s\Z', $now); + $now_sf = gmdate('Y-m-d\TH:i:s\Z', $now_sf); $deleted = $this->sfapi->getDeleted($mapping->getSalesforceObjectType(), $last_delete_sync_sf, $now_sf); $this->handleDeletedRecords($deleted, $mapping->getSalesforceObjectType()); + // We can't use $now_sf because it may have been adjusted to a future + // time and can cause the next pull to miss records. $pull_info[$mapping->id()]['last_delete_timestamp'] = $now; $this->state->set('salesforce.mapping_pull_info', $pull_info); }