-
-
Notifications
You must be signed in to change notification settings - Fork 1.2k
Compile endpoints on first call or when API compile! #2645
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Conversation
dcc22d6 to
02f2b79
Compare
dblock
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fix typo in CHANGELOG
02f2b79 to
9f4f989
Compare
|
Ran a couple of test about race conditions. Added Puma starting in single mode...
* Puma version: 7.1.0 ("Neon Witch")
* Ruby version: ruby 3.4.8 (2025-12-17 revision 995b59f666) +PRISM [arm64-darwin25]
* Min threads: 0
* Max threads: 5
* Environment: development
* PID: 46327
* Listening on http://127.0.0.1:9292
* Listening on http://[::1]:9292
Use Ctrl-C to stop
LOCK ACQUIRED! 2616
/ [:any] ["/"] - 2624
/ ["GET"] ["/swagger_doc"] - 2632
/ ["GET"] ["/swagger_doc/:name"] - 2640
/ [:any] ["/"] - 2648
/ ["GET"] ["/ping"] - 2656
/ [:any] ["/"] - 2664
/ ["GET"] [:raise] - 2672
/ [:any] ["/"] - 2680
/ ["GET"] ["/"] - 2688
/ [:any] ["/"] - 2696
/ ["GET"] ["/"] - 2704
/ [:any] ["/"] - 2712
/ ["GET"] [:ring] - 2720
/ ["POST"] [:ring] - 2728
/ ["PUT"] [:ring] - 2736
/ [:any] ["/"] - 2744
/decorated ["GET"] [:ping] - 2752
/ [:any] ["/"] - 2760
/spline ["POST"] ["/"] - 2768
/ [:any] ["/"] - 2776
/reticulated_splines ["GET"] ["/"] - 2784
/ [:any] ["/"] - 2792
/ ["GET"] ["plain_text"] - 2800
/ ["GET"] ["mixed"] - 2808
/ [:any] ["/"] - 2816
/ ["POST"] ["avatar"] - 2824
/ ["POST"] ["download"] - 2832
/ [:any] ["/"] - 2840
/entities ["GET"] [":id"] - 2848
/ [:any] ["/"] - 2856
/headers ["GET"] [":key"] - 2864
/headers ["GET"] ["/"] - 2872
/ [:any] ["/"] - 2880
/ ["GET"] [:stream] - 2888
UNLOCK! 2616
::1 - - [19/Dec/2025:11:31:18 +0000] "POST /api/spline HTTP/1.1" 201 - 0.0116
LOCK ACQUIRED! 2896
UNLOCK! 2896
::1 - - [19/Dec/2025:11:31:18 +0000] "GET /api/reticulated_splines?splines=%5B%7B%22id%22%3A1%2C%22reticulated%22%3Atrue%7D%2C%7B%22id%22%3A2%2C%22reticulated%22%3Afalse%7D%2C%7B%22id%22%3A3%2C%22reticulated%22%3Atrue%7D%2C%7B%22id%22%3A4%2C%22reticulated%22%3Afalse%7D%2C%7B%22id%22%3A5%2C%22reticulated%22%3Atrue%7D%2C%7B%22id%22%3A6%2C%22reticulated%22%3Afalse%7D%2C%7B%22id%22%3A7%2C%22reticulated%22%3Atrue%7D%2C%7B%22id%22%3A8%2C%22reticulated%22%3Afalse%7D%2C%7B%22id%22%3A9%2C%22reticulated%22%3Atrue%7D%2C%7B%22id%22%3A10%2C%22reticulated%22%3Afalse%7D%5D HTTP/1.1" 200 - 0.0118
LOCK ACQUIRED! 2904
::1 - - [19/Dec/2025:11:31:18 +0000] "GET /api/reticulated_splines?splines=%5B%7B%22id%22%3A1%2C%22reticulated%22%3Afalse%7D%2C%7B%22id%22%3A2%2C%22reticulated%22%3Atrue%7D%2C%7B%22id%22%3A3%2C%22reticulated%22%3Afalse%7D%2C%7B%22id%22%3A4%2C%22reticulated%22%3Atrue%7D%2C%7B%22id%22%3A5%2C%22reticulated%22%3Afalse%7D%2C%7B%22id%22%3A6%2C%22reticulated%22%3Atrue%7D%2C%7B%22id%22%3A7%2C%22reticulated%22%3Afalse%7D%2C%7B%22id%22%3A8%2C%22reticulated%22%3Atrue%7D%2C%7B%22id%22%3A9%2C%22reticulated%22%3Afalse%7D%2C%7B%22id%22%3A10%2C%22reticulated%22%3Atrue%7D%2C%7B%22id%22%3A11%2C%22reticulated%22%3Afalse%7D%2C%7B%22id%22%3A12%2C%22reticulated%22%3Atrue%7D%2C%7B%22id%22%3A13%2C%22reticulated%22%3Afalse%7D%2C%7B%22id%22%3A14%2C%22reticulated%22%3Atrue%7D%2C%7B%22id%22%3A15%2C%22reticulated%22%3Afalse%7D%2C%7B%22id%22%3A16%2C%22reticulated%22%3Atrue%7D%2C%7B%22id%22%3A17%2C%22reticulated%22%3Afalse%7D%2C%7B%22id%22%3A18%2C%22reticulated%22%3Atrue%7D%2C%7B%22id%22%3A19%2C%22reticulated%22%3Afalse%7D%2C%7B%22id%22%3A20%2C%22reticulated%22%3Atrue%7D%2C%7B%22id%22%3A21%2C%22reticulated%22%3Afalse%7D%2C%7B%22id%22%3A22%2C%22reticulated%22%3Atrue%7D%2C%7B%22id%22%3A23%2C%22reticulated%22%3Afalse%7D%2C%7B%22id%22%3A24%2C%22reticulated%22%3Atrue%7D%2C%7B%22id%22%3A25%2C%22reticulated%22%3Afalse%7D%2C%7B%22id%22%3A26%2C%22reticulated%22%3Atrue%7D%2C%7B%22id%22%3A27%2C%22reticulated%22%3Afalse%7D%2C%7B%22id%22%3A28%2C%22reticulated%22%3Atrue%7D%2C%7B%22id%22%3A29%2C%22reticulated%22%3Afalse%7D%2C%7B%22id%22%3A30%2C%22reticulated%22%3Atrue%7D%2C%7B%22id%22%3A31%2C%22reticulated%22%3Afalse%7D%2C%7B%22id%22%3A32%2C%22reticulated%22%3Atrue%7D%2C%7B%22id%22%3A33%2C%22reticulated%22%3Afalse%7D%2C%7B%22id%22%3A34%2C%22reticulated%22%3Atrue%7D%2C%7B%22id%22%3A35%2C%22reticulated%22%3Afalse%7D%2C%7B%22id%22%3A36%2C%22reticulated%22%3Atrue%7D%2C%7B%22id%22%3A37%2C%22reticulated%22%3Afalse%7D%2C%7B%22id%22%3A38%2C%22reticulated%22%3Atrue%7D%2C%7B%22id%22%3A39%2C%22reticulated%22%3Afalse%7D%2C%7B%22id%22%3A40%2C%22reticulated%22%3Atrue%7D%2C%7B%22id%22%3A41%2C%22reticulated%22%3Afalse%7D%2C%7B%22id%22%3A42%2C%22reticulated%22%3Atrue%7D%2C%7B%22id%22%3A43%2C%22reticulated%22%3Afalse%7D%2C%7B%22id%22%3A44%2C%22reticulated%22%3Atrue%7D%2C%7B%22id%22%3A45%2C%22reticulated%22%3Afalse%7D%2C%7B%22id%22%3A46%2C%22reticulated%22%3Atrue%7D%2C%7B%22id%22%3A47%2C%22reticulated%22%3Afalse%7D%2C%7B%22id%22%3A48%2C%22reticulated%22%3Atrue%7D%2C%7B%22id%22%3A49%2C%22reticulated%22%3Afalse%7D%2C%7B%22id%22%3A50%2C%22reticulated%22%3Atrue%7D%5D HTTP/1.1" 200 - 0.0010
UNLOCK! 2904
LOCK ACQUIRED! 3056
::1 - - [19/Dec/2025:11:31:18 +0000] "POST /api/spline HTTP/1.1" 201 - 0.0130
UNLOCK! 3056
::1 - - [19/Dec/2025:11:31:18 +0000] "POST /api/spline HTTP/1.1" 201 - 0.0132
LOCK ACQUIRED! 3064
UNLOCK! 3064 |
9f4f989 to
f3388c7
Compare
|
In comparison with current behavior, Puma starting in single mode...
* Puma version: 7.1.0 ("Neon Witch")
* Ruby version: ruby 3.4.8 (2025-12-17 revision 995b59f666) +PRISM [arm64-darwin25]
* Min threads: 0
* Max threads: 5
* Environment: development
* PID: 48751
* Listening on http://127.0.0.1:9292
* Listening on http://[::1]:9292
Use Ctrl-C to stop
LOCK ACQUIRED!
UNLOCK!
COMPILE! /spline ["POST"] ["/"] - 2744
::1 - - [19/Dec/2025:11:43:10 +0000] "POST /api/spline HTTP/1.1" 201 - 0.0031
COMPILE! /reticulated_splines ["GET"] ["/"] - 2760
::1 - - [19/Dec/2025:11:43:10 +0000] "GET /api/reticulated_splines?splines=%5B%7B%22id%22%3A1%2C%22reticulated%22%3Atrue%7D%5D HTTP/1.1" 200 - 0.0013
COMPILE! / ["GET"] ["/ping"] - 2752
::1 - - [19/Dec/2025:11:43:10 +0000] "GET /api/ping HTTP/1.1" 200 - 0.0043
::1 - - [19/Dec/2025:11:43:10 +0000] "GET /api/reticulated_splines?splines=%5B%7B%22id%22%3A1%2C%22reticulated%22%3Afalse%7D%2C%7B%22id%22%3A2%2C%22reticulated%22%3Atrue%7D%2C%7B%22id%22%3A3%2C%22reticulated%22%3Afalse%7D%2C%7B%22id%22%3A4%2C%22reticulated%22%3Atrue%7D%2C%7B%22id%22%3A5%2C%22reticulated%22%3Afalse%7D%2C%7B%22id%22%3A6%2C%22reticulated%22%3Atrue%7D%2C%7B%22id%22%3A7%2C%22reticulated%22%3Afalse%7D%2C%7B%22id%22%3A8%2C%22reticulated%22%3Atrue%7D%2C%7B%22id%22%3A9%2C%22reticulated%22%3Afalse%7D%2C%7B%22id%22%3A10%2C%22reticulated%22%3Atrue%7D%2C%7B%22id%22%3A11%2C%22reticulated%22%3Afalse%7D%2C%7B%22id%22%3A12%2C%22reticulated%22%3Atrue%7D%2C%7B%22id%22%3A13%2C%22reticulated%22%3Afalse%7D%2C%7B%22id%22%3A14%2C%22reticulated%22%3Atrue%7D%2C%7B%22id%22%3A15%2C%22reticulated%22%3Afalse%7D%2C%7B%22id%22%3A16%2C%22reticulated%22%3Atrue%7D%2C%7B%22id%22%3A17%2C%22reticulated%22%3Afalse%7D%2C%7B%22id%22%3A18%2C%22reticulated%22%3Atrue%7D%2C%7B%22id%22%3A19%2C%22reticulated%22%3Afalse%7D%2C%7B%22id%22%3A20%2C%22reticulated%22%3Atrue%7D%2C%7B%22id%22%3A21%2C%22reticulated%22%3Afalse%7D%2C%7B%22id%22%3A22%2C%22reticulated%22%3Atrue%7D%2C%7B%22id%22%3A23%2C%22reticulated%22%3Afalse%7D%2C%7B%22id%22%3A24%2C%22reticulated%22%3Atrue%7D%2C%7B%22id%22%3A25%2C%22reticulated%22%3Afalse%7D%2C%7B%22id%22%3A26%2C%22reticulated%22%3Atrue%7D%2C%7B%22id%22%3A27%2C%22reticulated%22%3Afalse%7D%2C%7B%22id%22%3A28%2C%22reticulated%22%3Atrue%7D%2C%7B%22id%22%3A29%2C%22reticulated%22%3Afalse%7D%2C%7B%22id%22%3A30%2C%22reticulated%22%3Atrue%7D%2C%7B%22id%22%3A31%2C%22reticulated%22%3Afalse%7D%2C%7B%22id%22%3A32%2C%22reticulated%22%3Atrue%7D%2C%7B%22id%22%3A33%2C%22reticulated%22%3Afalse%7D%2C%7B%22id%22%3A34%2C%22reticulated%22%3Atrue%7D%2C%7B%22id%22%3A35%2C%22reticulated%22%3Afalse%7D%2C%7B%22id%22%3A36%2C%22reticulated%22%3Atrue%7D%2C%7B%22id%22%3A37%2C%22reticulated%22%3Afalse%7D%2C%7B%22id%22%3A38%2C%22reticulated%22%3Atrue%7D%2C%7B%22id%22%3A39%2C%22reticulated%22%3Afalse%7D%2C%7B%22id%22%3A40%2C%22reticulated%22%3Atrue%7D%2C%7B%22id%22%3A41%2C%22reticulated%22%3Afalse%7D%2C%7B%22id%22%3A42%2C%22reticulated%22%3Atrue%7D%2C%7B%22id%22%3A43%2C%22reticulated%22%3Afalse%7D%2C%7B%22id%22%3A44%2C%22reticulated%22%3Atrue%7D%2C%7B%22id%22%3A45%2C%22reticulated%22%3Afalse%7D%2C%7B%22id%22%3A46%2C%22reticulated%22%3Atrue%7D%2C%7B%22id%22%3A47%2C%22reticulated%22%3Afalse%7D%2C%7B%22id%22%3A48%2C%22reticulated%22%3Atrue%7D%2C%7B%22id%22%3A49%2C%22reticulated%22%3Afalse%7D%2C%7B%22id%22%3A50%2C%22reticulated%22%3Atrue%7D%5D HTTP/1.1" 200 - 0.0008
::1 - - [19/Dec/2025:11:43:10 +0000] "POST /api/spline HTTP/1.1" 201 - 0.0002
::1 - - [19/Dec/2025:11:43:10 +0000] "POST /api/spline HTTP/1.1" 201 - 0.0070
::1 - - [19/Dec/2025:11:43:10 +0000] "GET /api/reticulated_splines?splines=%5B%7B%22id%22%3A1%2C%22reticulated%22%3Atrue%7D%2C%7B%22id%22%3A2%2C%22reticulated%22%3Afalse%7D%2C%7B%22id%22%3A3%2C%22reticulated%22%3Atrue%7D%2C%7B%22id%22%3A4%2C%22reticulated%22%3Afalse%7D%2C%7B%22id%22%3A5%2C%22reticulated%22%3Atrue%7D%2C%7B%22id%22%3A6%2C%22reticulated%22%3Afalse%7D%2C%7B%22id%22%3A7%2C%22reticulated%22%3Atrue%7D%2C%7B%22id%22%3A8%2C%22reticulated%22%3Afalse%7D%2C%7B%22id%22%3A9%2C%22reticulated%22%3Atrue%7D%2C%7B%22id%22%3A10%2C%22reticulated%22%3Afalse%7D%5D HTTP/1.1" 200 - 0.0004
::1 - - [19/Dec/2025:11:43:10 +0000] "POST /api/spline HTTP/1.1" 201 - 0.0041
::1 - - [19/Dec/2025:11:43:10 +0000] "POST /api/spline HTTP/1.1" 201 - 0.0002
COMPILE! / ["GET"] [:ring] - 2768
::1 - - [19/Dec/2025:11:43:10 +0000] "GET /api/ring HTTP/1.1" 200 - 0.0009
COMPILE! / ["POST"] [:ring] - 2776
::1 - - [19/Dec/2025:11:43:10 +0000] "POST /api/ring HTTP/1.1" 201 - 0.0004
COMPILE! / ["PUT"] [:ring] - 2784
::1 - - [19/Dec/2025:11:43:10 +0000] "PUT /api/ring HTTP/1.1" 200 - 0.0007
::1 - - [19/Dec/2025:11:43:10 +0000] "GET /api/reticulated_splines?splines=%5B%7B%22id%22%3A1%2C%22reticulated%22%3Atrue%7D%2C%7B%22id%22%3A2%2C%22reticulated%22%3Afalse%7D%2C%7B%22id%22%3A3%2C%22reticulated%22%3Afalse%7D%2C%7B%22id%22%3A4%2C%22reticulated%22%3Atrue%7D%2C%7B%22id%22%3A5%2C%22reticulated%22%3Afalse%7D%2C%7B%22id%22%3A6%2C%22reticulated%22%3Afalse%7D%2C%7B%22id%22%3A7%2C%22reticulated%22%3Atrue%7D%2C%7B%22id%22%3A8%2C%22reticulated%22%3Afalse%7D%2C%7B%22id%22%3A9%2C%22reticulated%22%3Afalse%7D%2C%7B%22id%22%3A10%2C%22reticulated%22%3Atrue%7D%2C%7B%22id%22%3A11%2C%22reticulated%22%3Afalse%7D%2C%7B%22id%22%3A12%2C%22reticulated%22%3Afalse%7D%2C%7B%22id%22%3A13%2C%22reticulated%22%3Atrue%7D%2C%7B%22id%22%3A14%2C%22reticulated%22%3Afalse%7D%2C%7B%22id%22%3A15%2C%22reticulated%22%3Afalse%7D%2C%7B%22id%22%3A16%2C%22reticulated%22%3Atrue%7D%2C%7B%22id%22%3A17%2C%22reticulated%22%3Afalse%7D%2C%7B%22id%22%3A18%2C%22reticulated%22%3Afalse%7D%2C%7B%22id%22%3A19%2C%22reticulated%22%3Atrue%7D%2C%7B%22id%22%3A20%2C%22reticulated%22%3Afalse%7D%2C%7B%22id%22%3A21%2C%22reticulated%22%3Afalse%7D%2C%7B%22id%22%3A22%2C%22reticulated%22%3Atrue%7D%2C%7B%22id%22%3A23%2C%22reticulated%22%3Afalse%7D%2C%7B%22id%22%3A24%2C%22reticulated%22%3Afalse%7D%2C%7B%22id%22%3A25%2C%22reticulated%22%3Atrue%7D%2C%7B%22id%22%3A26%2C%22reticulated%22%3Afalse%7D%2C%7B%22id%22%3A27%2C%22reticulated%22%3Afalse%7D%2C%7B%22id%22%3A28%2C%22reticulated%22%3Atrue%7D%2C%7B%22id%22%3A29%2C%22reticulated%22%3Afalse%7D%2C%7B%22id%22%3A30%2C%22reticulated%22%3Afalse%7D%2C%7B%22id%22%3A31%2C%22reticulated%22%3Atrue%7D%2C%7B%22id%22%3A32%2C%22reticulated%22%3Afalse%7D%2C%7B%22id%22%3A33%2C%22reticulated%22%3Afalse%7D%2C%7B%22id%22%3A34%2C%22reticulated%22%3Atrue%7D%2C%7B%22id%22%3A35%2C%22reticulated%22%3Afalse%7D%2C%7B%22id%22%3A36%2C%22reticulated%22%3Afalse%7D%2C%7B%22id%22%3A37%2C%22reticulated%22%3Atrue%7D%2C%7B%22id%22%3A38%2C%22reticulated%22%3Afalse%7D%2C%7B%22id%22%3A39%2C%22reticulated%22%3Afalse%7D%2C%7B%22id%22%3A40%2C%22reticulated%22%3Atrue%7D%2C%7B%22id%22%3A41%2C%22reticulated%22%3Afalse%7D%2C%7B%22id%22%3A42%2C%22reticulated%22%3Afalse%7D%2C%7B%22id%22%3A43%2C%22reticulated%22%3Atrue%7D%2C%7B%22id%22%3A44%2C%22reticulated%22%3Afalse%7D%2C%7B%22id%22%3A45%2C%22reticulated%22%3Afalse%7D%2C%7B%22id%22%3A46%2C%22reticulated%22%3Atrue%7D%2C%7B%22id%22%3A47%2C%22reticulated%22%3Afalse%7D%2C%7B%22id%22%3A48%2C%22reticulated%22%3Afalse%7D%2C%7B%22id%22%3A49%2C%22reticulated%22%3Atrue%7D%2C%7B%22id%22%3A50%2C%22reticulated%22%3Afalse%7D%2C%7B%22id%22%3A51%2C%22reticulated%22%3Afalse%7D%2C%7B%22id%22%3A52%2C%22reticulated%22%3Atrue%7D%2C%7B%22id%22%3A53%2C%22reticulated%22%3Afalse%7D%2C%7B%22id%22%3A54%2C%22reticulated%22%3Afalse%7D%2C%7B%22id%22%3A55%2C%22reticulated%22%3Atrue%7D%2C%7B%22id%22%3A56%2C%22reticulated%22%3Afalse%7D%2C%7B%22id%22%3A57%2C%22reticulated%22%3Afalse%7D%2C%7B%22id%22%3A58%2C%22reticulated%22%3Atrue%7D%2C%7B%22id%22%3A59%2C%22reticulated%22%3Afalse%7D%2C%7B%22id%22%3A60%2C%22reticulated%22%3Afalse%7D%2C%7B%22id%22%3A61%2C%22reticulated%22%3Atrue%7D%2C%7B%22id%22%3A62%2C%22reticulated%22%3Afalse%7D%2C%7B%22id%22%3A63%2C%22reticulated%22%3Afalse%7D%2C%7B%22id%22%3A64%2C%22reticulated%22%3Atrue%7D%2C%7B%22id%22%3A65%2C%22reticulated%22%3Afalse%7D%2C%7B%22id%22%3A66%2C%22reticulated%22%3Afalse%7D%2C%7B%22id%22%3A67%2C%22reticulated%22%3Atrue%7D%2C%7B%22id%22%3A68%2C%22reticulated%22%3Afalse%7D%2C%7B%22id%22%3A69%2C%22reticulated%22%3Afalse%7D%2C%7B%22id%22%3A70%2C%22reticulated%22%3Atrue%7D%2C%7B%22id%22%3A71%2C%22reticulated%22%3Afalse%7D%2C%7B%22id%22%3A72%2C%22reticulated%22%3Afalse%7D%2C%7B%22id%22%3A73%2C%22reticulated%22%3Atrue%7D%2C%7B%22id%22%3A74%2C%22reticulated%22%3Afalse%7D%2C%7B%22id%22%3A75%2C%22reticulated%22%3Afalse%7D%2C%7B%22id%22%3A76%2C%22reticulated%22%3Atrue%7D%2C%7B%22id%22%3A77%2C%22reticulated%22%3Afalse%7D%2C%7B%22id%22%3A78%2C%22reticulated%22%3Afalse%7D%2C%7B%22id%22%3A79%2C%22reticulated%22%3Atrue%7D%2C%7B%22id%22%3A80%2C%22reticulated%22%3Afalse%7D%2C%7B%22id%22%3A81%2C%22reticulated%22%3Afalse%7D%2C%7B%22id%22%3A82%2C%22reticulated%22%3Atrue%7D%2C%7B%22id%22%3A83%2C%22reticulated%22%3Afalse%7D%2C%7B%22id%22%3A84%2C%22reticulated%22%3Afalse%7D%2C%7B%22id%22%3A85%2C%22reticulated%22%3Atrue%7D%2C%7B%22id%22%3A86%2C%22reticulated%22%3Afalse%7D%2C%7B%22id%22%3A87%2C%22reticulated%22%3Afalse%7D%2C%7B%22id%22%3A88%2C%22reticulated%22%3Atrue%7D%2C%7B%22id%22%3A89%2C%22reticulated%22%3Afalse%7D%2C%7B%22id%22%3A90%2C%22reticulated%22%3Afalse%7D%2C%7B%22id%22%3A91%2C%22reticulated%22%3Atrue%7D%2C%7B%22id%22%3A92%2C%22reticulated%22%3Afalse%7D%2C%7B%22id%22%3A93%2C%22reticulated%22%3Afalse%7D%2C%7B%22id%22%3A94%2C%22reticulated%22%3Atrue%7D%2C%7B%22id%22%3A95%2C%22reticulated%22%3Afalse%7D%2C%7B%22id%22%3A96%2C%22reticulated%22%3Afalse%7D%2C%7B%22id%22%3A97%2C%22reticulated%22%3Atrue%7D%2C%7B%22id%22%3A98%2C%22reticulated%22%3Afalse%7D%2C%7B%22id%22%3A99%2C%22reticulated%22%3Afalse%7D%2C%7B%22id%22%3A100%2C%22reticulated%22%3Atrue%7D%5D HTTP/1.1" 200 - 0.0011
::1 - - [19/Dec/2025:11:43:10 +0000] "PUT /api/ring HTTP/1.1" 200 - 0.0002
::1 - - [19/Dec/2025:11:43:10 +0000] "PUT /api/ring HTTP/1.1" 200 - 0.0002
COMPILE! /headers ["GET"] [":key"] - 2792
::1 - - [19/Dec/2025:11:43:10 +0000] "GET /api/headers/Content-Type HTTP/1.1" 200 - 0.0007
::1 - - [19/Dec/2025:11:43:10 +0000] "GET /api/reticulated_splines?splines=%5B%7B%22id%22%3A1%2C%22reticulated%22%3Afalse%7D%2C%7B%22id%22%3A2%2C%22reticulated%22%3Atrue%7D%5D HTTP/1.1" 200 - 0.0003
::1 - - [19/Dec/2025:11:43:10 +0000] "PUT /api/ring HTTP/1.1" 200 - 0.0002
::1 - - [19/Dec/2025:11:43:10 +0000] "GET /api/headers/Accept HTTP/1.1" 200 - 0.0002
COMPILE! /headers ["GET"] ["/"] - 2800
::1 - - [19/Dec/2025:11:43:10 +0000] "GET /api/headers/Authorization HTTP/1.1" 200 - 0.0002
::1 - - [19/Dec/2025:11:43:10 +0000] "GET /api/headers/User-Agent HTTP/1.1" 200 - 0.0002
COMPILE! /entities ["GET"] [":id"] - 2808 |
f3388c7 to
28b048c
Compare
|
I will add some information in UPGRADING.md |
28b048c to
230b690
Compare
|
I think it's ok, but potentially this means that an API that is never called does get compiled now and didn't before, right? We also front-load Maybe dig up when we introduced lazy loading? Why did we do it this way then? |
This PR removes the lazy initialization of all endpoints in favor of compiling them through the instance compilation. I wouldn't bet that Grape will be faster but there will be only 1 compile phase.
mapandcompiledattributes readers have been removed from the public space. This is pure internal stuff so it should not impact anyoneOld behavior
Endpoints are
compiledon the first call. SeeCOMPILE!in the following logs.New behavior
When not precompiled, the first thread to acquire the lock will compile endpoints`
When precompiled