Timeout during metadata publishing to IBM Knowledge Catalog
Because a timeout error has occurred, metadata publishing to IBM Knowledge Catalog cannot be completed.
Symptoms
After you click the Publish to catalog button, a banner with the following text is displayed:Error The operation has timed out.
The button is not disabled after this action. However, if you click it again, another error message is displayed:
Error Concurrent data catalog synchronization exception
In addition, the timestamp in the Last published column is reset to the previous value. This might be N/A if it was the very first attempt to publish metadata.
Causes
This error message is displayed by the Data Gate user interface if the publishing process takes longer than five minutes. The error message is misleading because the operation continues in the background and finishes eventually. Once the operation has been completed and the information on the Data Gate dashboard is refreshed, the correct publication timestamp is displayed. You can monitor the actual progress of published metadata assets from the user interface of IBM Knowledge Catalog.
Resolving the problem
You cannot avoid the error if metadata about a large number of tables is published. However, you can reduce the time required to process the request. To this end, you must increase the number of threads that are used by the data-gate-data-catalog-integration container:
- Identify the name of your Data Gate pod:
- Identify the Data Gate instance identifier, and assign the value to
the variable
DG_INSTANCE_ID
by issuing theoc get dginstance
command. For example:oc get dginstance -n ${PROJECT_CPD_INST_OPERANDS} NAME VERSION BUILD STATUS RECONCILED AGE dg1699914520773847 5.0.0 5.0.0.82 Completed 5.0.0 6h58m
In this example, the instance ID is
dg1699914520773847
. Set the variableDG_INSTANCE_ID
to this instance ID. - Identify the Data Gate instance pod, and assign the value to the
variable
DG_POD
by issuing the followingoc get pod
command:DG_POD=$(oc get pod -n ${PROJECT_CPD_INST_OPERANDS} -l icpdsupport/app=dg-instance-server,\ icpdsupport/serviceInstanceId=`echo ${DG_INSTANCE_ID} | sed 's/^dg//'` -o jsonpath='{.items[0].metadata.name}')
- Identify the Data Gate instance identifier, and assign the value to
the variable
- Open a shell in the data-gate-data-catalog-integration
container:
oc exec -it ${DG_POD} -c data-gate-data-catalog-integration -n $PROJECT_CPD_INST_OPERANDS -- bash
- Inside the container, add a configuration value for the thread count. The recommended value is
8. You first have to check whether a configuration file for the container exists, and what the
wkc.asset.sync.threads
parameter is set to:cat /head/dwa/etc/data-catalog-integration.properties
This will display the contents of the configuration file on the screen. To continue:
- If the file does not exist, or if it exists, but does not contain the
wkc.asset.sync.threads
parameter, you can create a file with the correct setting or just add the missing setting by running the following command:echo 'wkc.asset.sync.threads = 8' >> /head/dwa/etc/data-catalog-integration.properties
- If the file exists, but contains a wrong
wkc.asset.sync.threads
value, you can replace this value by running the following command:sed -i 's/wkc.asset.sync.threads = .*/wkc.asset.sync.threads = 8/g' /head/dwa/etc/data-catalog-integration.properties
- If the file does not exist, or if it exists, but does not contain the
- Apply the new setting by restarting the pod.