PostgreSQL Upgrade from Filr 3.x to 4.0 fails

  • 7024087
  • 23-Aug-2019
  • 10-Sep-2019

Environment

Micro Focus Filr 3.x
Micro Focus Filr 4.0

Situation

When upgrading a large 3.x Filr deployment to 4.0, the migration from MySQL to PostgreSQL does not progress.  No error is visible.

To verify the database migration is not progressing, note the size of the PostgreSQL database, then check back 20 minutes later to see if the size increases. 

Steps to view the size of the database:
  1. Go to https://<ip or dns of the PostgreSQL appliance server>:9443
  2. Click the phpPgAdmin tile
  3. Click the PostgreSQL link (upper left)
  4. Provide the credentials:  user name will be postgress
  5. View the "postgres" database row.  Note the "Size" value.
If the size does not increase after 20 minutes, then your server is having the problem described in this document.

The /var/opt/novell/va/logs/migration.log file shows:
Heap exhausted during garbage collection: 144 bytes available, 352 requested.
Gen Boxed Unboxed LgBox LgUnbox Pin Alloc Waste Trig WP GCs Mem-age
0 0 0 0 0 0 0 0 42949672 0 0 0.0000
1 2531 19114 0 0 11 707559296 1704064 475847288 0 1 1.4824
2 5123 38618 0 0 18 1430675792 2629296 42949672 1962 0 1.0949
3 4049 30610 0 0 22 1133125200 2580912 42949672 2122 0 0.5147
4 3782 23084 1375 0 128 921409376 3991712 419504040 3107 1 0.4087
5 0 0 0 0 0 0 0 2000000 0 0 0.0000
6 1524 1262 0 0 0 88285536 3006112 2000000 1424 0 0.0000
7 0 0 0 0 0 0 0 2000000 0 0 0.0000
Total bytes allocated = 4281055200
Dynamic-space-size bytes = 4294967296
GC control variables:
*GC-INHIBIT* = true
*GC-PENDING* = true
*STOP-FOR-GC-PENDING* = false
fatal error encountered in SBCL pid 4309(tid 0x7ffff52d7700):
Heap exhausted, game over.     

Error opening /dev/tty: No such device or address
Welcome to LDB, a low-level debugger for the Lisp runtime environment.

Resolution

  • On the Filr 4 server, modify the /opt/novell/migration/migrate.load file to show as follows (note the highlighted portions):
    • LOAD DATABASE
    • from mysql://mysqluser:mysqlpass@localhost:3306/'mysqldb'
    • into postgresql://pguser:pgpass@localpg:5432/'pgdb'
    • SET MySQL PARAMETERS
    • net_read_timeout = '5000',
    • net_write_timeout = '5000'
    • WITH create no tables, batch rows = 500, batch concurrency = 3, workers = 3
    • ALTER SCHEMA 'mysqldb' RENAME TO 'public'
    • EXCLUDING TABLE NAMES MATCHING 'ssqrtz_locks', 'databasechangelog', 'databasechangeloglock';
  • After making these changes, follow these steps:
    • Go to https://<ip or dns of the PostgreSQL appliance server>:9443
    • Click the phpPgAdmin tile
    • Click the PostgreSQL link (upper left)
    • Provide the credentials:  user name will be postgress
    • Click the "Drop" button on the postgres row. 
    • Restart the migration