Closed rpignolet closed 2 years ago
I can reproduce the issue after dropping tables and sequences of rangerkms
database with their names in lower case, and then run the playbook ranger_kms_config.yml
. It seems the error message shows that there are few references not removed from the "postgres" catalog database (the index pg_type_typname_nsp_index
in the catalog table pg_type
).
If I use the following SQL commands provided by the RangerKMS (script kms_core_db_postgres.sql
) to delete tables and sequences, it do not reproduce the issue.
DROP TABLE IF EXISTS ranger_masterkey CASCADE;
DROP SEQUENCE IF EXISTS RANGER_MASTERKEY_SEQ;
DROP TABLE IF EXISTS ranger_keystore CASCADE;
DROP SEQUENCE IF EXISTS RANGER_KEYSTORE_SEQ;
The problem is when you drops rangerkms
database, references are not properly removed from pg_catalog
.
I tried an vacuum --full
to rangerkms
and postgres
databases, it seems this could fixe the issue.
But I needs to investigate more.
In fact, I have two SQL error messages:
ERROR: duplicate key value violates unique constraint "pg_type_typname_nsp_index"
Detail: Key (typname, typnamespace)=(ranger_masterkey, xxxx) already exists. ErrorCode: 0
and
ERROR: relation "ranger_masterkey" already exists ErrorCode: 0
In most case, I have duplicate key value violates unique constraint
.
In my topology, I have:
[ranger_kms:children]
master2
master3
According to the following Ansible traces and timestamps of the DB schema import from master2
and master3
nodes, it seems that this is a parallelization issue, two master nodes try to import the same DB schema simultaneously.
That is why in most case, the error occures in master3
, and rangerkms
tables are correctly created at the end despite the failure.
On master2
node:
STDERR:
2022-10-12 11:19:05,082 [I] DB FLAVOR :POSTGRES
2022-10-12 11:19:05,082 [I] --------- Verifying Ranger DB connection ---------
2022-10-12 11:19:05,082 [I] Checking connection
2022-10-12 11:19:05,082 [JISQL] /usr/lib/jvm/jre-1.8.0-openjdk/bin/java -cp /usr/share/java/postgresql-jdbc.jar:/opt/tdp/ranger-2.0.1-TDP-0.1.0-SNAPSHOT-kms/jisql/lib/* org.apache.util.sql.Jisql -driver postgresql -cstring jdbc:postgresql://ldap-01:5432/rangerkms -u rangerkms -p '********' -noheader -trim -c \; -query "SELECT 1;"
2022-10-12 11:19:05,570 [I] connection success
2022-10-12 11:19:05,570 [I] --------- Verifying Ranger DB tables ---------
2022-10-12 11:19:05,570 [I] Verifying table ranger_masterkey in database rangerkms
2022-10-12 11:19:05,570 [JISQL] /usr/lib/jvm/jre-1.8.0-openjdk/bin/java -cp /usr/share/java/postgresql-jdbc.jar:/opt/tdp/ranger-2.0.1-TDP-0.1.0-SNAPSHOT-kms/jisql/lib/* org.apache.util.sql.Jisql -driver postgresql -cstring jdbc:postgresql://ldap-01:5432/rangerkms -u rangerkms -p '********' -noheader -trim -c \; -query "select * from (select table_name from information_schema.tables where table_catalog='rangerkms' and table_name = 'ranger_masterkey') as temp;"
2022-10-12 11:19:06,062 [I] Table ranger_masterkey does not exist in database rangerkms
2022-10-12 11:19:06,062 [I] --------- Importing Ranger Core DB Schema ---------
2022-10-12 11:19:06,062 [I] Importing db schema to database rangerkms from file: kms_core_db_postgres.sql
2022-10-12 11:19:06,062 [JISQL] /usr/lib/jvm/jre-1.8.0-openjdk/bin/java -cp /usr/share/java/postgresql-jdbc.jar:/opt/tdp/ranger-2.0.1-TDP-0.1.0-SNAPSHOT-kms/jisql/lib/* org.apache.util.sql.Jisql -driver postgresql -cstring jdbc:postgresql://ldap-01:5432/rangerkms -u rangerkms -p '********' -noheader -trim -c \; -input /opt/tdp/ranger-2.0.1-TDP-0.1.0-SNAPSHOT-kms/db/postgres/kms_core_db_postgres.sql
2022-10-12 11:19:06,583 [I] kms_core_db_postgres.sql DB schema imported successfully
2022-10-12 11:19:10,234 [I] DB FLAVOR :POSTGRES
2022-10-12 11:19:10,234 [I] --------- Verifying Ranger DB connection ---------
2022-10-12 11:19:10,234 [I] Checking connection
2022-10-12 11:19:10,234 [JISQL] /usr/lib/jvm/jre-1.8.0-openjdk/bin/java -cp /usr/share/java/postgresql-jdbc.jar:/opt/tdp/ranger-2.0.1-TDP-0.1.0-SNAPSHOT-kms/jisql/lib/* org.apache.util.sql.Jisql -driver postgresql -cstring jdbc:postgresql://ldap-01:5432/rangerkms -u rangerkms -p '********' -noheader -trim -c \; -query "SELECT 1;"
2022-10-12 11:19:10,704 [I] connection success
./setup.sh: line 431: /usr/lib/jvm/jre-1.8.0-openjdk/bin/jar: No such file or directory
On master3
node:
STDERR:
2022-10-12 11:19:05,107 [I] DB FLAVOR :POSTGRES
2022-10-12 11:19:05,107 [I] --------- Verifying Ranger DB connection ---------
2022-10-12 11:19:05,107 [I] Checking connection
2022-10-12 11:19:05,108 [JISQL] /usr/lib/jvm/jre-1.8.0-openjdk/bin/java -cp /usr/share/java/postgresql-jdbc.jar:/opt/tdp/ranger-2.0.1-TDP-0.1.0-SNAPSHOT-kms/jisql/lib/* org.apache.util.sql.Jisql -driver postgresql -cstring jdbc:postgresql://ldap-01:5432/rangerkms -u rangerkms -p '********' -noheader -trim -c \; -query "SELECT 1;"
2022-10-12 11:19:05,603 [I] connection success
2022-10-12 11:19:05,603 [I] --------- Verifying Ranger DB tables ---------
2022-10-12 11:19:05,603 [I] Verifying table ranger_masterkey in database rangerkms
2022-10-12 11:19:05,603 [JISQL] /usr/lib/jvm/jre-1.8.0-openjdk/bin/java -cp /usr/share/java/postgresql-jdbc.jar:/opt/tdp/ranger-2.0.1-TDP-0.1.0-SNAPSHOT-kms/jisql/lib/* org.apache.util.sql.Jisql -driver postgresql -cstring jdbc:postgresql://ldap-01:5432/rangerkms -u rangerkms -p '********' -noheader -trim -c \; -query "select * from (select table_name from information_schema.tables where table_catalog='rangerkms' and table_name = 'ranger_masterkey') as temp;"
2022-10-12 11:19:06,089 [I] Table ranger_masterkey does not exist in database rangerkms
2022-10-12 11:19:06,089 [I] --------- Importing Ranger Core DB Schema ---------
2022-10-12 11:19:06,089 [I] Importing db schema to database rangerkms from file: kms_core_db_postgres.sql
2022-10-12 11:19:06,089 [JISQL] /usr/lib/jvm/jre-1.8.0-openjdk/bin/java -cp /usr/share/java/postgresql-jdbc.jar:/opt/tdp/ranger-2.0.1-TDP-0.1.0-SNAPSHOT-kms/jisql/lib/* org.apache.util.sql.Jisql -driver postgresql -cstring jdbc:postgresql://ldap-01:5432/rangerkms -u rangerkms -p '********' -noheader -trim -c \; -input /opt/tdp/ranger-2.0.1-TDP-0.1.0-SNAPSHOT-kms/db/postgres/kms_core_db_postgres.sql
SQLException : SQL state: 23505 org.postgresql.util.PSQLException: ERROR: duplicate key value violates unique constraint "pg_type_typname_nsp_index"
Detail: Key (typname, typnamespace)=(ranger_masterkey, 2200) already exists. ErrorCode: 0
SQLException : SQL state: 23505 org.postgresql.util.PSQLException: ERROR: duplicate key value violates unique constraint "pg_type_typname_nsp_index"
Detail: Key (typname, typnamespace)=(ranger_masterkey, 2200) already exists. ErrorCode: 0
2022-10-12 11:19:06,571 [E] kms_core_db_postgres.sql DB schema import failed!
Nice catch @kpgtek ! Indeed we run the setup.sh
in parallel for Ranger KMS and Ranger Admin but we only have 1 Ranger Admin and 2 Ranger KMS. We should run setup.sh
in sequence, maybe throttle: 1
can do the job https://docs.ansible.com/ansible/2.9/user_guide/playbooks_strategies.html#using-keywords-to-control-execution.
By controlling the playbook execution with throttle: 1
, it seems that fixes the issue. I put this in the setup.sh
running task.
Deployed with getting started, here the log: