Odoo Insights

Odoo production freeze after upgrade what to check first

Odoo freezes or becomes unresponsive after an upgrade or module install. Discover the 5 most common root causes and how to verify them before calling support.

2026-05-03 · 8 minutes

The freeze after upgrade is real and avoidable

Production stalls right after an upgrade or when a new module is installed. The screen may hang on a white or grey screen, or users see a spinning wheel indefinitely. In most cases, the server is still running, but the web interface becomes unusable. The incident is visible immediately to all users, and the longer it persists, the higher the risk of data inconsistency or lost work.

This scenario is not rare: Odoo 15 to 16 migrations, custom addon updates, or third-party connector installations can trigger it. The root causes are usually not bugs in Odoo itself, but misconfigurations, missing dependencies, or incompatible code. The key is to act fast and methodically to restore service while preserving data integrity.

Why Odoo freezes after upgrades or module changes

Odoo runs as a Python web application with a PostgreSQL database. When you upgrade or install a module, Odoo runs database migrations and Python code updates. If any step fails or times out, the process can leave the system in an unstable state, causing the web interface to freeze.

Common causes include:

  • Missing Python dependencies: A new module requires a library that isn’t installed on the server.
  • Database migration failure: An SQL or Python migration script fails silently, leaving the database schema inconsistent.
  • Custom code incompatibility: A custom addon written for an older Odoo version calls deprecated methods or uses removed features.
  • Long-running operations: A migration or data update takes too long and times out, locking the database.
  • Memory exhaustion: The upgrade triggers high memory usage, causing the Odoo worker to crash or hang.

In most cases, the issue is not with Odoo itself, but with the environment or customizations. The symptoms above are typical of production freezes after upgrades, module installs, or connector integrations.

Quick checks before you do anything else

Start with non-invasive checks that take less than 5 minutes. These help you rule out common causes and decide your next step.

1. Check the Odoo service status

Connect to your server via SSH and run:

sudo systemctl status odoo

What to look for: If the service is active (running) but users still can’t access the web interface, the freeze is likely in the application layer, not the service itself. If the service is failed or inactive, restarting may resolve the issue.

2. Check the Odoo log for errors

Open the Odoo log file (location varies by install method):

sudo tail -n 100 /var/log/odoo/odoo-server.log

What to look for: Search for lines containing ERROR, CRITICAL, or Traceback. Common patterns include:

  • Module X not found: No module named 'something' → missing Python dependency
  • psycopg2.OperationalError: could not connect to server → PostgreSQL not reachable
  • ValueError: Invalid field 'x_field' on model 'x.model' → incompatible custom field or method
  • TimeoutError: Migration script too long → long-running migration

3. Check PostgreSQL health

Run:

sudo -u postgres psql -c 'SELECT 1'

What to look for: If this command fails, PostgreSQL may be down or misconfigured. Odoo cannot function without a healthy database.

4. Check disk space and memory

Run:

df -h && free -h

What to look for: Low disk space (90%) can cause freezes. If disk is full, Odoo may fail to write logs or complete migrations.

How to fix the freeze step by step

Use the following checklist based on your diagnosis. Each step is designed to be safe and reversible.

Step 1 – Restart Odoo and PostgreSQL safely

If the service is running but unresponsive, restart it:

sudo systemctl restart postgresql odoo

Success: Service restarts without errors, and the web interface becomes responsive.

If it fails: Do not retry. Proceed to Step 2.

Step 2 – Roll back the last change (if recent)

If the freeze started immediately after installing a module or upgrading, roll back the change:

  • For custom modules: Disable the module via the Odoo UI (Settings > Technical > Modules > Uninstall) or via command line:
odoo-bin -u base --stop-after-init

What this does: Starts Odoo, loads only the base module, and stops. If the system becomes responsive, the issue is in the custom module.

Step 3 – Fix missing dependencies

If the log shows a missing Python module (e.g., No module named 'pandas'), install it:

sudo pip3 install pandas

Note: Always install Python packages in the same environment as Odoo. Use pip3 with the correct Python version.

Success: The module installs without errors. Restart Odoo to verify.

Step 4 – Repair database migrations

If a migration failed, you may need to reset or repair it. Do not run this on a live production system unless you have a backup.

First, create a backup:

sudo -u postgres pg_dump odoo > /backups/odoo_pre_repair_$(date +%F).sql

Then, reset failed migrations (replace 16.0 with your Odoo version):

odoo-bin -d your_db_name --stop-after-init -i base --upgrade-path=addons,/odoo-custom-addons

What this does: Runs only the base module and custom addons, allowing migrations to complete without third-party interference.

Step 5 – Rebuild the environment (last resort)

If the issue persists and you suspect environment corruption, rebuild the Odoo environment:

  • Create a new virtual environment
  • Reinstall Odoo and all dependencies from a known-good list (e.g., requirements.txt)
  • Restore the database from a pre-upgrade backup

Risk: This is time-consuming and may not be feasible during business hours. Only use this if all else fails and you have a recent backup.

How to verify the fix and prevent recurrence

After applying a fix, confirm the system is stable before allowing users back in.

1. Functional test checklist

  • Log in as admin and open the dashboard
  • Open a sales order and save it
  • Run a simple report (e.g., Sales Analysis)
  • Check that scheduled actions (automated emails, reports) are queued correctly

2. Performance check

Run Odoo in debug mode to check for slow queries:

odoo-bin -d your_db_name --log-level=debug

What to look for: Queries taking more than 1 second or repeated errors in the log.

3. Add monitoring

Set up a simple uptime check:

curl -I http://localhost:8069/web/login | head -n 1

Success: Returns HTTP/1.1 200 OK. If not, alert the team immediately.

4. Document the fix

Update your internal runbook with the root cause, fix steps, and verification checklist. Include the Odoo version and module list for future reference. This is especially important if you use custom addons or third-party integrations from /odoo-custom-addons.html or /odoo-integration.html.

When to seek help and what to provide

If the freeze persists after trying the steps above, or if you suspect data corruption, escalate to a specialist. Provide the following to speed up diagnosis:

  • Logs: The last 200 lines of /var/log/odoo/odoo-server.log
  • Database backup: A recent SQL dump from before the issue started
  • Environment details:
    • Odoo version (e.g., 16.0)
    • OS and version (e.g., Ubuntu 22.04)
    • Python version and environment path
    • List of installed modules (from Settings > Technical > Modules)
  • Steps to reproduce: Exact commands or UI actions that triggered the issue

Triggers to escalate immediately:

  • Repeated crashes within 30 minutes
  • Database errors in logs (e.g., duplicate key value violates unique constraint)
  • Users reporting data loss or corruption
  • No backup available for rollback

If you are on a cloud plan, contact your provider with the above details. For self-hosted systems, consult an Odoo implementation partner from /odoo-implementation.html.

Upgrade risk: what to do before your next change

Freezes are preventable with a simple pre-upgrade checklist. Run this before any module install or Odoo upgrade to avoid downtime.

Action How to do it Success criteria
Backup database Run sudo -u postgres pg_dump odoo > /backups/pre_upgrade_$(date +%F).sql Backup file created and verified
Check Python dependencies Review requirements.txt and run pip3 install -r requirements.txt --dry-run No missing packages reported
Test in staging Apply changes to a staging environment that mirrors production No errors in staging logs
Check custom code compatibility Review custom addons for deprecated methods using Odoo’s deprecated.py tool No deprecation warnings
Schedule during low-traffic window Plan the upgrade for a time when fewer users are active Window chosen and stakeholders notified

If you are unsure about any step, consult a certified Odoo partner or review the /odoo-pricing.html page to assess support options.

You can fix most freezes without downtime

The most common cause of Odoo freezes after upgrades or module changes is a silent failure during database migration or a missing Python dependency. These are mechanical issues, not bugs, and can be diagnosed and fixed within minutes if you act methodically.

Start with the quick checks, then follow the fix steps based on what you find. Always back up before making changes, and escalate only if the issue is complex or data is at risk. Most production freezes are preventable with a simple pre-upgrade checklist and a staging environment.

Your immediate action today: Run the quick checks in the Quick checks before you do anything else section. Note the first error or warning you see, then decide your next step based on the fix checklist. This takes less than 10 minutes and often resolves the issue without further intervention.

Practical Next Step

Run the free upgrade risk scan for your Odoo instance

Discuss Your Odoo Scope

FAQ

How do I know if the freeze is caused by a custom module or Odoo itself?

Start Odoo with only the base module and no third-party addons. Use:

odoo-bin -d your_db_name --stop-after-init -i base

If the system becomes responsive, the issue is in a custom or third-party module. If it remains frozen, the issue may be with Odoo itself or the environment.

What if the Odoo log shows 'psycopg2.OperationalError' after an upgrade?

This usually means PostgreSQL is not reachable. Check if PostgreSQL is running:

sudo systemctl status postgresql

If it’s stopped, restart it:

sudo systemctl restart postgresql

If it fails to start, check disk space and logs in /var/log/postgresql/postgresql-14-main.log (adjust version as needed).

Is it safe to restart Odoo multiple times if it’s unresponsive?

Restarting Odoo multiple times is safe, but avoid doing it rapidly (within seconds). Each restart attempts to recover the database state. If the system remains frozen after 2–3 restarts, there is likely a deeper issue such as a failed migration or corrupted data. In that case, stop restarting and proceed to rollback or escalation.

What should I do if a migration script is stuck and won’t complete?

If a migration is stuck, do not interrupt it. Instead, restore the database from a backup taken before the migration started. Then, review the migration script for errors and test it in a staging environment. If you don’t have a recent backup, contact support immediately to avoid data loss.

How can I prevent this issue when upgrading Odoo versions?

Always upgrade in a staging environment first. Use the pre-upgrade checklist in the Upgrade risk: what to do before your next change section. Review the Odoo migration guide for your version and test all custom modules for compatibility. Back up your database and configuration before every upgrade.