Fix: a customer's bucket is stuck provisioning
WHMCS shows the ImpulseDrive service as active, but no bucket has appeared on the MinIO host and the customer cannot connect.
Last updated 20 days ago
Fix: a customer's bucket is stuck provisioning
What you're seeing
A customer ordered an ImpulseDrive plan. WHMCS shows the service in the `Active` state, the invoice is paid, but:
- The bucket isn't visible on the target MinIO host.
- The customer's client-area dashboard shows "Provisioning..." or no access keys.
- The customer reports the endpoint refuses their credentials.
Why it happens
ImpulseMinio's provisioning is asynchronous. When WHMCS marks the service active, the module enqueues a provisioning task that ImpulseCore's cron runner picks up on its next tick. The task either hasn't run yet, or it ran and threw an exception that left the row in a half-built state.
Fix
- Check Core's Cron Health first. Open ImpulseCore's admin tab and look at the Cron Health table for the ImpulseMinio provisioning task (typically named something like
impulseminio.provision). Note the last-run timestamp and the last-run status. - If status is
error, click into the run to see the captured exception. The audit log filtered tomodule=impulseminioand the affected service ID will have the full stack trace. Typical causes:- Target server unreachable (see the unreachable-server article below).
- Region has no eligible server with capacity for the plan.
- DNS record for the bucket subdomain failed to create.
- Admin proxy returned an error from
setBucketQuota.
- If status is
pendingand the last-run timestamp is stale, Core's cron isn't ticking. Force a manual tick from the WHMCS box:Replace/opt/plesk/php/8.3/bin/php /path/to/whmcs/modules/addons/impulsecore/cron.php/opt/plesk/php/8.3/bin/phpwith your PHP CLI binary. On Plesk:/opt/plesk/php/8.3/bin/php. On cPanel:/opt/cpanel/ea-php83/root/usr/bin/php. On a vanilla LAMP install:/usr/bin/phpor whateverwhich phpreturns. Replace/path/to/whmcswith your install dir. The cron line that should run this on a schedule lives in the system crontab β if it's missing, that's the root cause and adding it fixes future provisioning automatically. - If the run errors and you want to see the full output synchronously, re-run the task manually from the same CLI. Core's cron runner writes the verbose output to stdout when invoked interactively, which is the fastest way to see exactly which step failed.
- Once the root cause is fixed, the next cron tick picks up the task and finishes the provision. You don't need to retry by hand β the task is idempotent. If you want to force it immediately rather than waiting, re-run Core's cron from CLI as in step 3.
How to confirm it worked
The service's row in mod_impulseminio_services flips to status active. The customer's client-area dashboard shows the bucket name, endpoint URL, and access keys. A provisioned event lands in the audit log. The customer can connect with mc alias set or any S3 client and list/put objects.