automation-suite
2024.10
true
UiPath logo, featuring letters U and I in white

Automation Suite on Linux installation guide

Last updated Jul 17, 2025

Node becomes unresponsive (OOM) during large Document Understanding bundle upload

Description

Uploading large Document Understanding offline bundles may cause a node to become Not Ready due to an out-of-memory (OOM) condition. The issue occurs because the image seeding process loads large image layers into memory in parallel, which results in high memory consumption. This typically affects multi-node environments where the seeding operation is performed directly from a node.

Solution

To address the issue, you must seed the images sequentially with a single worker thread. This reduces memory usage and prevents the node from running out of memory.

Take the following steps:

  1. Unzip the offline bundle to extract the image tar file (for example, /uipath/tmp/offline-bundle.xxx/sf-images/images.tar).
  2. Obtain Docker registry credentials (docker_registry_username and docker_registry_password) from the cluster configuration (infra.docker_registry) or the Kubernetes secret uipath/docker-registry-credentials.
  3. Use the following script to seed the images one registry pod at a time with a single worker thread:
    function get_registry_addresses() {
      local namespace="docker-registry"
      local lh_registry=1
      local server_node_count
    
      lh_registry=$(kubectl get deployment -n "${namespace}" docker-registry --ignore-not-found --no-headers | wc -l)
      server_node_count=$(kubectl get nodes -l "node-role.kubernetes.io/master=true" --no-headers | wc -l)
    
      IFS=" " read -r -a registry_addresses <<<"$(kubectl get pods -n ${namespace} -o jsonpath="{.items[*].status.podIP}" -l app=docker-registry)"
    
      if [[ "${lh_registry}" -eq 1 ]]; then
        [[ "${#registry_addresses[@]}" -eq 1 ]] || error "Failed to get address of registry pod."
      else
        [[ "${#registry_addresses[@]}" -eq "${server_node_count}" ]] || error "Failed to get address of all registry pods."
      fi
      echo "${registry_addresses[@]}"
    }
    
    registry_addresses=($(get_registry_addresses))
    
    for ip in "${registry_addresses[@]}"; do
      ./bin/uipathctl registry seed \
        --tar-file "<tar_file_path>" \
        --dest-registry "${ip}:5000" \
        --dest-password "<docker_registry_password>" \
        --dest-username "<docker_registry_username>" \
        --log-level debug \
        --num-worker 1
    donefunction get_registry_addresses() {
      local namespace="docker-registry"
      local lh_registry=1
      local server_node_count
    
      lh_registry=$(kubectl get deployment -n "${namespace}" docker-registry --ignore-not-found --no-headers | wc -l)
      server_node_count=$(kubectl get nodes -l "node-role.kubernetes.io/master=true" --no-headers | wc -l)
    
      IFS=" " read -r -a registry_addresses <<<"$(kubectl get pods -n ${namespace} -o jsonpath="{.items[*].status.podIP}" -l app=docker-registry)"
    
      if [[ "${lh_registry}" -eq 1 ]]; then
        [[ "${#registry_addresses[@]}" -eq 1 ]] || error "Failed to get address of registry pod."
      else
        [[ "${#registry_addresses[@]}" -eq "${server_node_count}" ]] || error "Failed to get address of all registry pods."
      fi
      echo "${registry_addresses[@]}"
    }
    
    registry_addresses=($(get_registry_addresses))
    
    for ip in "${registry_addresses[@]}"; do
      ./bin/uipathctl registry seed \
        --tar-file "<tar_file_path>" \
        --dest-registry "${ip}:5000" \
        --dest-password "<docker_registry_password>" \
        --dest-username "<docker_registry_username>" \
        --log-level debug \
        --num-worker 1
    done
    
    Make sure to replace <tar_file_path>,<docker_registry_password>, and <docker_registry_username> with the appropriate values.
  • Description
  • Solution

Was this page helpful?

Get The Help You Need
Learning RPA - Automation Courses
UiPath Community Forum
Uipath Logo White
Trust and Security
© 2005-2025 UiPath. All rights reserved.