Chapter 5. Known issues

  • ENTMQMAAS-1281: Resources not deleted when uninstalling AMQ Online using OLM on OpenShift Container Platform 4.1

    Workaround: For the workaround about how to remove all resources when uninstalling AMQ Online using the Operator Lifecycle Manager (OLM), see Removing remaining resources after uninstalling AMQ Online using the Operator Lifecycle Manager.

  • ENTMQMAAS-1799: Possible to define duplicate addresses using router pattern-matching syntax

    When defining addresses in a standard address space instance, be aware that the following restrictions affect the composition of the spec.address field in the address resource.

    The router specifies both period (.) and forward slash (/) characters as address separator characters and that both characters are equivalent. In addition, the router infers a leading address separator character even if it is not explicitly included.

    Since AMQ Online does not encode these rules, care must be taken to avoid defining addresses that collide on the router network.

    Workaround: One way to avoid this collision is to follow these guidelines for defining addresses:

    • Use either a period or a forward slash in the addresses, but do not use both.
    • Do not begin addresses with an address separator character.

    For more information about address pattern matching on the router, see the Red Hat AMQ Interconnect documentation, Address pattern matching.

  • ENTMQMAAS-1952: This issue is related to ENTMQBR-2313. When restarted, the broker can use more memory to read messages from the journal than to process the same messages at runtime. This issue can cause the broker pod to fail with an OutOfMemoryError message. You can view the broker logs to check the reason for the broker pod failure. For more information, see Viewing broker logs.

    The amount of additional memory required during startup varies depending on the contents of the message, including headers, properties, and payload.

    Workaround: The workaround for this issue requires a three-stage procedure. Note that this procedure temporarily increases the memory resources required within your cluster.

    • First, temporarily increase the memory available to brokers.
    • Next, remove the messages that reside on AMQ Online.
    • Finally, set the broker memory size and globalMaxSize to suit your use-case.

    Procedure

    1. Pause your messaging applications so they no longer send messages to AMQ Online.
    2. Log in as a service admin:

      oc login -u admin
    3. Switch to the project where AMQ Online is installed:

      oc project amq-online-infra
    4. Obtain the name of the address space plan:

      oc get addressspace -n namespace address-space-name -o "jsonpath={.spec.plan}"
    5. Obtain the infraconfig resource type, infraconfig name, and the current broker memory settings:

      oc get addressspaceplan address-space-plan -o "jsonpath=infraConfigResourceType={.spec.addressSpaceType}infraconfig infraConfigName{.spec.infraConfigRef} currentBrokerMemory={.spec.broker.resources.memory}"
    6. Obtain a copy of the infraconfig resource settings.

      oc get infraconfig-resource-type infraconfig-name --export -o yaml > infraconfig-name.bak
    7. Increase the broker memory allocation by 1Gi. If the current broker memory is absent from the infraconfig resource settings, start at 2Gi.

      oc patch infraconfig-resource-type infraconfig-name --type=merge -p '{"spec":{"broker":{"resources" : {"memory":"2Gi"}}}}'
    8. The broker pods will restart. If the broker pods restart successfully without the OutOfMemoryError recurring, continue to the next step. Otherwise, repeat the last step.
    9. Remove the messages that reside on AMQ Online by letting the application consume the messages. Alternatively, you can use the purge option available from the Red Hat AMQ Console to remove messages, but these messages will be lost.
    10. Use the Red Hat AMQ Console to verify that all queues and topic subscriptions are at 0.
    11. Use the AMQ Online configuration sizing guidelines to calculate the size of the broker container memory requirements.
    12. Set the broker memory size and globalMaxSize. Use a broker memory size of eight times the globalMaxSize derived from the calculation. This configuration example sets the globalMaxSize to 256Mb:

      oc patch infraconfig-resource-type infraconfig-name --type=merge -p '{"spec":{"broker":{"globalMaxSize": "256Mb", "resources" : {"memory":"2Gi"}}}}'
    13. The brokers will restart. Resume your messaging applications to restart normal operations.