Uploaded image for project: 'WildFly'
  1. WildFly
  2. WFLY-5201

Do not use newly disallowed characters in jgroups runtime metric attributes names

XMLWordPrintable

    • Icon: Feature Request Feature Request
    • Resolution: Done
    • Icon: Blocker Blocker
    • 10.0.0.CR1
    • 10.0.0.Beta2
    • Clustering, Management
    • None

      When doing a :read-resource(include-runtime=true,recursive=true) this blows up. Debugging shows that to be because e.g. the resource /subsystem=jgroups/channel=ee/protocol=UDP contains metrics called things like

       "timer.keep_alive_time" => {
                      "type" => LONG,
                      "description" => "Timeout in ms to remove idle threads from the timer pool",
                      "expressions-allowed" => false,
                      "nillable" => false,
                      "access-type" => "metric",
                      "storage" => "runtime"
                  },
                  "timer.max_threads" => {
                      "type" => INT,
                      "description" => "Max thread pool size for the timer thread pool",
                      "expressions-allowed" => false,
                      "nillable" => false,
                      "access-type" => "metric",
                      "storage" => "runtime"
                  },
                  "timer.min_threads" => {
                      "type" => INT,
                      "description" => "Minimum thread pool size for the timer thread pool",
                      "expressions-allowed" => false,
                      "nillable" => false,
                      "access-type" => "metric",
                      "storage" => "runtime"
                  },
      

      i.e. they have a dot in their name. So when the r-r handler wants to read the attributes it in effect tries to do the following demonstrated by CLI commands:

      [standalone@localhost:9990 /] /subsystem=jgroups/channel=ee/protocol=UDP:read-attribute(name=timer
      timer.keep_alive_time   timer.min_threads       timer.rejection_policy  timer.wheel_size        timer_queue_size        timer_threads           
      timer.max_threads       timer.queue_max_size    timer.tick_time         timer_class             timer_tasks             timer_type              
      [standalone@localhost:9990 /] /subsystem=jgroups/channel=ee/protocol=UDP:read-attribute(name=timer.max_threads)      
      {
          "outcome" => "failed",
          "failure-description" => "WFLYCTL0201: Unknown attribute 'timer'",
          "rolled-back" => true
      }
      

      I see ReadResourceHandler has some stuff to extract the attribute name if 'extended syntax' is used. So we have two options:
      1) Ban dots in metric/attribute names
      2) Add a workaround to fall back. In other words if ReadAttributeHandler thinks extended syntax is being used, and cannot find the extracted 'timer' attribute, then try the full non-extracted name, e.g. timer.max_threads, and only then error.

              rhn-engineering-rhusar Radoslav Husar
              rhn-engineering-rhusar Radoslav Husar
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

                Created:
                Updated:
                Resolved: