Skip to content

feat: Make drivers more dynamic#737

Merged
gtema merged 1 commit into
mainfrom
dynamic-plugins
May 28, 2026
Merged

feat: Make drivers more dynamic#737
gtema merged 1 commit into
mainfrom
dynamic-plugins

Conversation

@gtema
Copy link
Copy Markdown
Collaborator

@gtema gtema commented May 28, 2026

Solve the problem of linker stripping plugins when loaded dynamically by
scanning the openstack-keystone crate dependencies and building
artificial 'anchors' file to keep modules linked. This allows a truly
dynamic plugin injection.

Move the keystone_db command out of the openstack-keystone crate
merging it into the keystone-manage

@gtema gtema force-pushed the dynamic-plugins branch from 4d444e3 to a614acd Compare May 28, 2026 13:40
@github-actions
Copy link
Copy Markdown

github-actions Bot commented May 28, 2026

🐰 Bencher Report

Branchdynamic-plugins
Testbedubuntu-latest
Click to view all benchmark results
BenchmarkLatencyBenchmark Result
nanoseconds (ns)
(Result Δ%)
Upper Boundary
nanoseconds (ns)
(Limit %)
Command_Serde/apply/remove📈 view plot
🚷 view threshold
129,610.00 ns
(-16.49%)Baseline: 155,211.45 ns
599,479.72 ns
(21.62%)
Command_Serde/apply/set📈 view plot
🚷 view threshold
129,430.00 ns
(-3.40%)Baseline: 133,990.90 ns
329,633.92 ns
(39.26%)
Command_Serde/pack/delete📈 view plot
🚷 view threshold
121.46 ns
(-1.11%)Baseline: 122.83 ns
145.17 ns
(83.67%)
Command_Serde/pack/delete_index📈 view plot
🚷 view threshold
112.69 ns
(-1.66%)Baseline: 114.59 ns
134.72 ns
(83.65%)
Command_Serde/pack/set📈 view plot
🚷 view threshold
220.49 ns
(+10.69%)Baseline: 199.20 ns
240.79 ns
(91.57%)
Command_Serde/pack/set_index📈 view plot
🚷 view threshold
113.08 ns
(-1.53%)Baseline: 114.83 ns
134.69 ns
(83.95%)
Command_Serde/unpack/delete📈 view plot
🚷 view threshold
183.80 ns
(-2.46%)Baseline: 188.43 ns
230.39 ns
(79.78%)
Command_Serde/unpack/delete_index📈 view plot
🚷 view threshold
155.85 ns
(-5.47%)Baseline: 164.86 ns
203.48 ns
(76.59%)
Command_Serde/unpack/set📈 view plot
🚷 view threshold
238.88 ns
(-3.07%)Baseline: 246.45 ns
291.59 ns
(81.92%)
Command_Serde/unpack/set_index📈 view plot
🚷 view threshold
158.53 ns
(-2.76%)Baseline: 163.03 ns
201.64 ns
(78.62%)
Payload_encryption/pack/inner📈 view plot
🚷 view threshold
65.47 ns
(+0.02%)Baseline: 65.46 ns
77.77 ns
(84.19%)
Payload_encryption/pack/remove_cmd📈 view plot
🚷 view threshold
121.03 ns
(-0.77%)Baseline: 121.96 ns
145.68 ns
(83.08%)
Payload_encryption/pack/set_cmd📈 view plot
🚷 view threshold
267.27 ns
(+15.82%)Baseline: 230.76 ns
286.73 ns
(93.21%)
Payload_encryption/unpack/inner📈 view plot
🚷 view threshold
165.68 ns
(+1.80%)Baseline: 162.74 ns
190.72 ns
(86.87%)
Payload_encryption/unpack/remove_cmd📈 view plot
🚷 view threshold
194.49 ns
(-1.75%)Baseline: 197.96 ns
241.83 ns
(80.42%)
Payload_encryption/unpack/set_cmd📈 view plot
🚷 view threshold
258.17 ns
(-0.22%)Baseline: 258.73 ns
314.37 ns
(82.12%)
Raft_1Node_Latency/prefix/1node📈 view plot
🚷 view threshold
2,466,100.00 ns
(-33.71%)Baseline: 3,720,122.58 ns
6,865,067.54 ns
(35.92%)
Raft_1Node_Latency/read/1node📈 view plot
🚷 view threshold
581.37 ns
(+4.54%)Baseline: 556.11 ns
760.11 ns
(76.48%)
Raft_1Node_Latency/remove/1node📈 view plot
🚷 view threshold
344,710.00 ns
(-12.19%)Baseline: 392,544.84 ns
1,162,722.02 ns
(29.65%)
Raft_1Node_Latency/write/1node📈 view plot
🚷 view threshold
355,310.00 ns
(-7.12%)Baseline: 382,537.42 ns
927,252.38 ns
(38.32%)
build_snapshot/default📈 view plot
🚷 view threshold
90,607.00 ns
(-3.86%)Baseline: 94,248.07 ns
156,527.04 ns
(57.89%)
fernet token/project📈 view plot
🚷 view threshold
1,421.40 ns
(-3.46%)Baseline: 1,472.29 ns
1,633.16 ns
(87.03%)
get_data_keyspace📈 view plot
🚷 view threshold
0.31 ns
(-3.18%)Baseline: 0.32 ns
0.38 ns
(81.74%)
get_db📈 view plot
🚷 view threshold
0.31 ns
(-3.21%)Baseline: 0.32 ns
0.38 ns
(81.47%)
get_fernet_token_timestamp/project📈 view plot
🚷 view threshold
155.87 ns
(+4.96%)Baseline: 148.51 ns
173.46 ns
(89.86%)
get_keyspace📈 view plot
🚷 view threshold
4.35 ns
(-7.15%)Baseline: 4.69 ns
8.35 ns
(52.10%)
🐰 View full continuous benchmarking report in Bencher

@github-actions
Copy link
Copy Markdown

github-actions Bot commented May 28, 2026

🦢 Load Test Results

Goose Attack Report

Plan Overview

Action Started Stopped Elapsed Users
Increasing 26-05-28 16:11:14 26-05-28 16:11:16 00:00:02 0 → 4
Maintaining 26-05-28 16:11:16 26-05-28 16:11:46 00:00:30 4
Decreasing 26-05-28 16:11:46 26-05-28 16:11:46 00:00:00 0 ← 4

Request Metrics

Method Name # Requests # Fails Average (ms) Min (ms) Max (ms) RPS Failures/s
GET 7222 0 16.12 10 32 240.73 0.00
Aggregated 7222 0 16.12 10 32 240.73 0.00

Response Time Metrics

Method Name 50%ile (ms) 60%ile (ms) 70%ile (ms) 80%ile (ms) 90%ile (ms) 95%ile (ms) 99%ile (ms) 100%ile (ms)
GET 14 17 20 20 21 22 24 32
Aggregated 14 17 20 20 21 22 24 32

Status Code Metrics

Method Name Status Codes
GET 7,222 [200]
Aggregated 7,222 [200]

Transaction Metrics

Transaction # Times Run # Fails Average (ms) Min (ms) Max (ms) RPS Failures/s
ListUsers
0.0 0 0 0.00 0 0 0.00 0.00
0.1 4370 0 13.26 10 22 145.67 0.00
ValidateToken
1.0 0 0 0.00 0 0 0.00 0.00
1.1 2852 0 20.59 16 32 95.07 0.00
Aggregated 7222 0 16.12 10 32 240.73 0.00

Scenario Metrics

Transaction # Users # Times Run Average (ms) Min (ms) Max (ms) Scenarios/s Iterations
ListUsers 2 4368 13.27 10 22 145.60 2184.00
ValidateToken 2 2850 20.60 16 32 95.00 1425.00
Aggregated 4 7218 16.16 10 32 240.60 3609.00

View full report

@gtema gtema force-pushed the dynamic-plugins branch from a614acd to 2f08c50 Compare May 28, 2026 14:55
Solve the problem of linker stripping plugins when loaded dynamically by
scanning the `openstack-keystone` crate dependencies and building
artificial 'anchors' file to keep modules linked. This allows a truly
dynamic plugin injection.

Move the keystone_db command out of the `openstack-keystone` crate
merging it into the `keystone-manage`
@gtema gtema force-pushed the dynamic-plugins branch from 2f08c50 to b80f6aa Compare May 28, 2026 15:57
@gtema gtema merged commit eb06666 into main May 28, 2026
34 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant