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_IDby issuing theoc get dginstancecommand. 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 6h58mIn this example, the instance ID is
dg1699914520773847. Set the variableDG_INSTANCE_IDto this instance ID. - Identify the Data Gate instance pod, and assign the value to the
variable
DG_PODby issuing the followingoc get podcommand: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.threadsparameter is set to:cat /head/dwa/etc/data-catalog-integration.propertiesThis 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.threadsparameter, 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.threadsvalue, 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.