Is RT 4.4.2 compatible with Percona Cluster?


#1

Hello,

I am new to Perl and RT. I’ve been tasked with upgrading our existing RT 4.0.24 environment to 4.4.2. The existing environment consists of two Apache (2.2) servers running RHE (6.9), Perl (5.10.1) and RT 4.0.24. Only one of the pair is ever in production. The RT database runs on a Percona (Percona-XtraDB-Cluster-57.x86_64) cluster consisting of three RHE (7.4) servers. We use an LDAP plug-in for authentication. To the best of my knowledge, RT is functioning correctly in this environment.

I’ve been attempting to upgrade RT on the non-production Apache server using a non-production copy of the database which is also in the same Percona cluster. I’ve configured the RT_SiteConfig.pm on the non-production Apache server to point to the non-production copy of the database. While the RT code upgrade in non-production (make upgrade) has been successful every attempt at the database upgrade in non-production (make upgrade-database) has been a failure. However, after making a copy of the database on a non-cluster Percona server (Percona-Server-server-57.x86_64), the database upgrade in non-production was a success and RT functions correctly.

When attempting the database upgrade (make upgrade-database) in the cluster, the problem was that it failed a different way each time. Between each upgrade attempt, I would refresh the database to the pre-upgrade attempt version and then try again. Samples of some of the different errors included:

One one attempt:

Processing 4.3.10
Now populating database schema.
[17476] [Wed Dec 13 19:41:55 2017] [critical]: DBD::mysql::st execute failed: Table ‘Assets’ already exists at /root/rt-4.4.2/sbin/…/lib/RT/Handle.pm line 552. (/root/rt-4.4.2/sbin/…/lib/RT.pm:394)
DBD::mysql::st execute failed: Table ‘Assets’ already exists at /root/rt-4.4.2/sbin/…/lib/RT/Handle.pm line 552.
make: *** [upgrade-database] Error 255
[root@rt01 rt-4.4.2]#

I checked production and the “Assets” table does not exist.

On another attempt:

Processing 4.3.10
Now populating database schema.
[17738] [Thu Dec 14 19:23:33 2017] [critical]: DBD::mysql::st execute failed: Table ‘Catalogs’ already exists at /root/rt-4.4.2/sbin/…/lib/RT/Handle.pm line 552. (/root/rt-4.4.2/sbin/…/lib/RT.pm:394)
DBD::mysql::st execute failed: Table ‘Catalogs’ already exists at /root/rt-4.4.2/sbin/…/lib/RT/Handle.pm line 552.
make: *** [upgrade-database] Error 255

Here, as well, the “Catalogs” table does not exist in production.

On my final attempt, when each error cropped up, I would fix it, then carry on again doing a “make upgrade-database” and specifying the start version as the one just prior to the error. In that way I hoped to avoid any idempotent issues. In that way I managed to complete the database upgrade. However, when I fired up Apache and tried to access the RT application, this is what was displayed in the browser:

“An internal RT error has occurred. Your administrator can find more details in RT’s log files.”

Upon checking the logs, I discovered this:

[21984] [Thu Dec 14 21:54:47 2017] [warning]: DBD::mysql::st execute failed: Percona-XtraDB-Cluster prohibits use of GET_LOCK with pxc_strict_mode = ENFORCING at /usr/local/share/perl5/Apache/Session/Lock/MySQL.pm line 54, line 522. (/usr/local/share/perl5/Apache/Session/Lock/MySQL.pm:54)
[21984] [Thu Dec 14 21:54:47 2017] [warning]: DBD::mysql::st execute failed: Percona-XtraDB-Cluster prohibits use of GET_LOCK with pxc_strict_mode = ENFORCING at /usr/local/share/perl5/Apache/Session/Lock/MySQL.pm line 54, line 522. (/usr/local/share/perl5/Apache/Session/Lock/MySQL.pm:54)
[21984] [Thu Dec 14 21:54:47 2017] [warning]: DBD::mysql::st execute failed: Percona-XtraDB-Cluster prohibits use of GET_LOCK with pxc_strict_mode = ENFORCING at /usr/local/share/perl5/Apache/Session/Lock/MySQL.pm line 54, line 522. (/usr/local/share/perl5/Apache/Session/Lock/MySQL.pm:54)
[21984] [Thu Dec 14 21:54:47 2017] [warning]: DBD::mysql::st execute failed: Percona-XtraDB-Cluster prohibits use of GET_LOCK with pxc_strict_mode = ENFORCING at /usr/local/share/perl5/Apache/Session/Lock/MySQL.pm line 54, line 522. (/usr/local/share/perl5/Apache/Session/Lock/MySQL.pm:54)
[21984] [Thu Dec 14 21:54:47 2017] [error]: Can’t call method “as_string” on an undefined value at /opt/rt4/sbin/…/lib/RT/Interface/Web.pm line 906.
Stack:
[/opt/rt4/sbin/…/lib/RT/Interface/Web.pm:906]
[/opt/rt4/sbin/…/lib/RT/Interface/Web.pm:295]
[/opt/rt4/share/html/autohandler:53] (/opt/rt4/sbin/…/lib/RT/Interface/Web/Handler.pm:208)

At this point, we are considering running the database on the non-cluster Percona database server but would prefer to use the cluster if possible.

Can anyone advise me if RT 4.4.2 is compatible with Percona cluster, or can be configured to be compatible with Percona cluster and if so, how one goes about performing an upgrade from 4.0.24 to 4.4.2 successfully?

Thanks,

Trevor McLeod
Systems Administrator
Department of Computer Science, University of BC
Vancouver, Canada