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:

  1. Identify the name of your Data Gate pod:
    1. Identify the Data Gate instance identifier, and assign the value to the variable DG_INSTANCE_ID by issuing the oc 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 variable DG_INSTANCE_ID to this instance ID.

    2. Identify the Data Gate instance pod, and assign the value to the variable DG_POD by issuing the following oc 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}')
  2. 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
  3. 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
  4. Apply the new setting by restarting the pod.