This is an automated email from the ASF dual-hosted git repository.

chewbranca pushed a commit to branch cache-io-priority-encoding
in repository https://gitbox.apache.org/repos/asf/couchdb-ioq.git

commit f051c7f0195ea4d124a80df117bdf702a937db98
Author: Russell Branca <[email protected]>
AuthorDate: Thu Jun 5 17:15:00 2025 -0700

    Cache shard info for IOQ2 priority
---
 src/ioq_server2.erl | 17 ++++++++++++++---
 1 file changed, 14 insertions(+), 3 deletions(-)

diff --git a/src/ioq_server2.erl b/src/ioq_server2.erl
index 39aa8f4..ce15b2b 100644
--- a/src/ioq_server2.erl
+++ b/src/ioq_server2.erl
@@ -533,9 +533,7 @@ add_request_dimensions(Request, {Class, Shard0, GroupId}) ->
         {db_meta, security} ->
             {undefined, undefined, undefined};
         _ ->
-            Shard1 = filename:rootname(Shard0),
-            {User0, DbName0} = shard_info(Shard1),
-            {Shard1, User0, DbName0}
+            extract_shard_info(Shard0)
     end,
     Request#ioq_request{
         shard = Shard,
@@ -548,6 +546,19 @@ add_request_dimensions(Request, undefined) ->
     Request#ioq_request{class=other}.
 
 
+extract_shard_info(Shard0) ->
+    case erlang:get({io_priority_cache, Shard0}, undefined) of
+        undefined ->
+            Shard1 = filename:rootname(Shard0),
+            {User, Dbname} = shard_info(Shard1),
+            Info = {Shard1, User, Dbname},
+            erlang:put({io_priority_cache, Shard0}, Info),
+            Info;
+        Info ->
+            Info
+    end.
+
+
 -spec shard_info(dbname()) -> {any(), any()}.
 shard_info(Shard) ->
     try split(Shard) of

Reply via email to