tokers commented on code in PR #7822:
URL: https://github.com/apache/apisix/pull/7822#discussion_r961484339


##########
apisix/plugins/opentelemetry.lua:
##########
@@ -273,6 +280,25 @@ local function create_tracer_obj(conf)
 end
 
 
+local function inject_attributes(attributes, wanted_attributes, source)
+    for _, key in ipairs(wanted_attributes) do
+        local is_key_a_match = #key >= 2 and key:sub(-1, -1) == "*"
+        local prefix = key:sub(0, -2)

Review Comment:
   We can only calculate the `prefix` only if `is_key_a_match` is `true` since 
it will generate a new string object. What about re-organizing the code to:
   
   ```lua
   local is_prefix_key = #key >= 2 and key:byte(-1, -1) == str_byte("*")
   
   if is_prefix_key then
       local prefix = key:sub(0, -2)
       for possible_key, value in pairs(source) do
           if core.string.has_prefix(possible_key, prefix) then
               core.table.insert(attributes, attr.string(possible_key, value))
           end
       end
   else
   
       local val = source[key]
       if val then
           core.table.insert(attributes, attr.string(key, val))
       end
   end
   ```
   
   Note it's just a pseudo code.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to