לא ניתן לערוך קבוצות תגיות תחת קטגוריה

סיכום מבוסס בינה מלאכותית

A user tknospdr reported an Internal Server Error when trying to edit tag groups under a category, despite being able to manage tags and edit tag groups in admin. The error occurred when clicking the “+ Add required tag group” button, with the browser console showing a 500 error on /tag_groups/filter/search. After troubleshooting with tobiaseigen and checking logs, Moin identified the issue: the site setting max_tag_search_results was set to 3, which caused a validation error in fetch_limit_from_param because the default limit must be between 0 and 3 — but the code expected a minimum of 5. tknospdr confirmed that changing the setting back to 5 resolved the issue. Moin traced the bug to a hardcoded limit in the tag group controller and submitted a fix, which has since been merged into Discourse here. The bug was confirmed reproducible and is now resolved.

כשמנסים לנהל קבוצת תגיות תחת קטגוריה, אני מקבל חלון קופץ גנרי של Internal Server Error.

אני יכול לנהל תגיות תחת הקטגוריה, ואני יכול לערוך קבוצות תגיות תחת ניהול בלי בעיות.

זה רק תחת כל קטגוריה אם אני לוחץ על מפתח הברגים, ואז לוחץ על תגיות, אני מקבל את השגיאה כאשר אני מנסה לבחור קבוצת תגיות תחת אחד מהם:

הגבל את קבוצות התגיות האלה לקטגוריה הזו:
או
דרוש מנושאים חדשים שיהיו להם תגיות מקבוצות תגיות:

הוסף קבוצת תגיות נדרשת

אני לא בטוח איפה לחפש כדי למצוא יומן רישום של השגיאה הזו.

אנחנו אמורים לעלות לאוויר עם הפורום הזה בימים הקרובים, אני אודה מאוד אם מישהו יוכל לעזור לי לדכא את זה בזמן כדי להשיק אותו.
אנחנו באמת צריכים להיות מסוגלים לדרוש כמה תגיות בקטגוריה מסוימת לפני ההשקה.

2 לייקים

Sorry you’re experiencing this problem. :grimacing:

When you try these things with the javascript console open, do you see any additional error messages that can help with troubleshooting?

I just tried and am not able to replicate. It just saves correctly.

Can you share a screenshot of the “edit tag group” page for the tag group you are trying to use on your category? Maybe the permissions don’t match?

I get:
Failed to load resource: the server responded with a status of 500 () ... https://connect.checkinpos.com/tag_groups/filter/search?q=&limit=3

I have 3 different tag groups available, but it doesn’t get as far as showing me the groups available. The pop up happens as soon as I click on the button.

האם ניסית זאת במצב בטוח? אולי תוסף או רכיב מפריעים?

האם עדכנת לגרסה האחרונה של Discourse?

כן, פשוט עדכנתי הבוקר. יכול להיות שזה שבר משהו.
לא ידעתי של-Discourse יש מצב בטוח, חכה רגע…

כן, זה עדיין קורה במצב בטוח.

לייק 1

משהו ב-/logs?

2

[DiscourseJsProcessor] הוצאה משימוש: המאפיין parts בצמתי נתיב הוצא משימוש, השתמשו ב-head וב-tail במקום זאת
2 יוני 14:27

חריגת משימה: סוג ארגומנט פקודה לא נתמך: FalseClass
ב 1:47 אחר הצהריים

חריגת משימה: סוג ארגומנט פקודה לא נתמך: FalseClass
ב 15:10

RuntimeError (ברירת מחדל :limit אינו בין 0 ל-3) app/controllers/application_controller.rb:1027:in `fetch_int_from_params' app/controllers/application_controller.rb:1020:in `fetch_limit_from_param
9:24 בבוקר
4

[DiscourseJsProcessor] הוצאה משימוש: המאפיין parts בצמתי נתיב הוצא משימוש, השתמשו ב-head וב-tail במקום זאת
9:33 בבוקר
2

[DiscourseJsProcessor] הוצאה משימוש: המאפיין parts בצמתי נתיב הוצא משימוש, השתמשו ב-head וב-tail במקום זאת
9:33 בבוקר
16

RuntimeError (ברירת מחדל :limit אינו בין 0 ל-3) app/controllers/application_controller.rb:1025:in `fetch_int_from_params' app/controllers/application_controller.rb:1018:in `fetch_limit_from_param

קשה לעזור לך לפתור בעיות עם שלבי שחזור באתר אחר מלבד שלך.

אולי נסה למחוק את קבוצות התגים שלך וליצור אותן מחדש?

אני אתן לזה ניסיון עוד מעט. הקבוצות האחרות כבר משובצות לקטגוריות שונות וממשיכות לעבוד אז אני מודאג מכך שלא אוכל לשבץ אותן מחדש לאחר השמדה ויצירה מחדש.

האם תוכל לחזור לגרסה קודמת יותר של Discourse? עשיתי גיבוי ממש לפני העדכון הבוקר.

האם תוכל לומר לי אם שינית את הגדרת האתר max_tag_search_results?

2 לייקים

כן, זה מוגדר ל-3.

לייק 1

אני יכול לשחזר את הבעיה רק על ידי שינוי ההגדרה באתר שלי ל-3 גם כן.
תוכל לנסות לשנות אותה בחזרה ל-5?

2 לייקים

זה אכן פותר את הבעיה. נראה כמו באג לא?
לא הייתי חושב שלשינוי ההגדרה הזו תהיה השפעה על בחירה של הגדרה אחרת.

2 לייקים

Yes, you’ve discovered a bug! :clap: Thanks for perservering to get to the bottom of it.

Great job finding repro, @moin! :clap: :clap:

We’ll get this looked into.

לייק 1

Glad I could help, but I just did what smarter folks told me to do… :slight_smile:

לייק 1

The log you provided helped me find it.

I searched for fetch_limit_from_param in the code and found a line in the tag group controller which referenced the setting.

full message and backtrace from logs
Message

RuntimeError (default :limit is not between 0 and 3)
app/controllers/application_controller.rb:1025:in `fetch_int_from_params'
app/controllers/application_controller.rb:1018:in `fetch_limit_from_params'
app/controllers/tag_groups_controller.rb:95:in `search'
app/controllers/application_controller.rb:428:in `block in with_resolved_locale'
app/controllers/application_controller.rb:428:in `with_resolved_locale'
lib/middleware/omniauth_bypass_middleware.rb:35:in `call'
lib/content_security_policy/middleware.rb:12:in `call'
lib/middleware/anonymous_cache.rb:415:in `call'
lib/middleware/csp_script_nonce_injector.rb:12:in `call'
config/initializers/008-rack-cors.rb:26:in `call'
lib/middleware/default_headers.rb:13:in `call'
config/initializers/100-quiet_logger.rb:20:in `call'
config/initializers/100-silence_logger.rb:29:in `call'
lib/middleware/enforce_hostname.rb:23:in `call'
lib/middleware/processing_request.rb:12:in `call'
lib/middleware/request_tracker.rb:385:in `call'


Backtrace

app/controllers/application_controller.rb:1025:in `fetch_int_from_params'
app/controllers/application_controller.rb:1018:in `fetch_limit_from_params'
app/controllers/tag_groups_controller.rb:95:in `search'
actionpack (7.2.2.1) lib/action_controller/metal/basic_implicit_render.rb:8:in `send_action'
actionpack (7.2.2.1) lib/abstract_controller/base.rb:226:in `process_action'
actionpack (7.2.2.1) lib/action_controller/metal/rendering.rb:193:in `process_action'
actionpack (7.2.2.1) lib/abstract_controller/callbacks.rb:261:in `block in process_action'
activesupport (7.2.2.1) lib/active_support/callbacks.rb:121:in `block in run_callbacks'
app/controllers/application_controller.rb:428:in `block in with_resolved_locale'
i18n (1.14.7) lib/i18n.rb:353:in `with_locale'
app/controllers/application_controller.rb:428:in `with_resolved_locale'
activesupport (7.2.2.1) lib/active_support/callbacks.rb:130:in `block in run_callbacks'
activesupport (7.2.2.1) lib/active_support/callbacks.rb:141:in `run_callbacks'
actionpack (7.2.2.1) lib/abstract_controller/callbacks.rb:260:in `process_action'
actionpack (7.2.2.1) lib/action_controller/metal/rescue.rb:27:in `process_action'
actionpack (7.2.2.1) lib/action_controller/metal/instrumentation.rb:77:in `block in process_action'
activesupport (7.2.2.1) lib/active_support/notifications.rb:210:in `block in instrument'
activesupport (7.2.2.1) lib/active_support/notifications/instrumenter.rb:58:in `instrument'
activesupport (7.2.2.1) lib/active_support/notifications.rb:210:in `instrument'
actionpack (7.2.2.1) lib/action_controller/metal/instrumentation.rb:76:in `process_action'
actionpack (7.2.2.1) lib/action_controller/metal/params_wrapper.rb:259:in `process_action'
activerecord (7.2.2.1) lib/active_record/railties/controller_runtime.rb:39:in `process_action'
actionpack (7.2.2.1) lib/abstract_controller/base.rb:163:in `process'
actionview (7.2.2.1) lib/action_view/rendering.rb:40:in `process'
rack-mini-profiler (3.3.1) lib/mini_profiler/profiling_methods.rb:89:in `block in profile_method'
actionpack (7.2.2.1) lib/action_controller/metal.rb:252:in `dispatch'
actionpack (7.2.2.1) lib/action_controller/metal.rb:335:in `dispatch'
actionpack (7.2.2.1) lib/action_dispatch/routing/route_set.rb:67:in `dispatch'
actionpack (7.2.2.1) lib/action_dispatch/routing/route_set.rb:50:in `serve'
actionpack (7.2.2.1) lib/action_dispatch/journey/router.rb:53:in `block in serve'
actionpack (7.2.2.1) lib/action_dispatch/journey/router.rb:133:in `block in find_routes'
actionpack (7.2.2.1) lib/action_dispatch/journey/router.rb:126:in `each'
actionpack (7.2.2.1) lib/action_dispatch/journey/router.rb:126:in `find_routes'
actionpack (7.2.2.1) lib/action_dispatch/journey/router.rb:34:in `serve'
actionpack (7.2.2.1) lib/action_dispatch/routing/route_set.rb:896:in `call'
lib/middleware/omniauth_bypass_middleware.rb:35:in `call'
rack (2.2.13) lib/rack/tempfile_reaper.rb:15:in `call'
rack (2.2.13) lib/rack/conditional_get.rb:27:in `call'
rack (2.2.13) lib/rack/head.rb:12:in `call'
actionpack (7.2.2.1) lib/action_dispatch/http/permissions_policy.rb:38:in `call'
lib/content_security_policy/middleware.rb:12:in `call'
lib/middleware/anonymous_cache.rb:415:in `call'
lib/middleware/csp_script_nonce_injector.rb:12:in `call'
config/initializers/008-rack-cors.rb:26:in `call'
rack (2.2.13) lib/rack/session/abstract/id.rb:266:in `context'
rack (2.2.13) lib/rack/session/abstract/id.rb:260:in `call'
actionpack (7.2.2.1) lib/action_dispatch/middleware/cookies.rb:704:in `call'
actionpack (7.2.2.1) lib/action_dispatch/middleware/callbacks.rb:31:in `block in call'
activesupport (7.2.2.1) lib/active_support/callbacks.rb:101:in `run_callbacks'
actionpack (7.2.2.1) lib/action_dispatch/middleware/callbacks.rb:30:in `call'
actionpack (7.2.2.1) lib/action_dispatch/middleware/debug_exceptions.rb:31:in `call'
actionpack (7.2.2.1) lib/action_dispatch/middleware/show_exceptions.rb:32:in `call'
logster (2.20.1) lib/logster/middleware/reporter.rb:40:in `call'
lib/middleware/default_headers.rb:13:in `call'
lograge (0.14.0) lib/lograge/rails_ext/rack/logger.rb:18:in `call_app'
railties (7.2.2.1) lib/rails/rack/logger.rb:29:in `call'
config/initializers/100-quiet_logger.rb:20:in `call'
config/initializers/100-silence_logger.rb:29:in `call'
actionpack (7.2.2.1) lib/action_dispatch/middleware/request_id.rb:33:in `call'
lib/middleware/enforce_hostname.rb:23:in `call'
rack (2.2.13) lib/rack/method_override.rb:24:in `call'
rack (2.2.13) lib/rack/sendfile.rb:110:in `call'
plugins/discourse-prometheus/lib/middleware/metrics.rb:14:in `call'
rack-mini-profiler (3.3.1) lib/mini_profiler.rb:191:in `call'
lib/middleware/processing_request.rb:12:in `call'
message_bus (4.4.1) lib/message_bus/rack/middleware.rb:60:in `call'
lib/middleware/request_tracker.rb:385:in `call'
actionpack (7.2.2.1) lib/action_dispatch/middleware/remote_ip.rb:96:in `call'
rails_failover (2.2.0) lib/rails_failover/active_record/middleware.rb:67:in `block in call'
activerecord (7.2.2.1) lib/active_record/connection_handling.rb:376:in `with_role_and_shard'
activerecord (7.2.2.1) lib/active_record/connection_handling.rb:147:in `connected_to'
rails_failover (2.2.0) lib/rails_failover/active_record/middleware.rb:64:in `call'
rails_multisite (6.1.0) lib/rails_multisite/middleware.rb:26:in `call'
railties (7.2.2.1) lib/rails/engine.rb:535:in `call'
railties (7.2.2.1) lib/rails/railtie.rb:226:in `public_send'
railties (7.2.2.1) lib/rails/railtie.rb:226:in `method_missing'
rack (2.2.13) lib/rack/urlmap.rb:74:in `block in call'
rack (2.2.13) lib/rack/urlmap.rb:58:in `each'
rack (2.2.13) lib/rack/urlmap.rb:58:in `call'
unicorn (6.1.0) lib/unicorn/http_server.rb:634:in `process_client'
unicorn (6.1.0) lib/unicorn/http_server.rb:739:in `worker_loop'
unicorn (6.1.0) lib/unicorn/http_server.rb:547:in `spawn_missing_workers'
unicorn (6.1.0) lib/unicorn/http_server.rb:143:in `start'
unicorn (6.1.0) bin/unicorn:128:in `<top (required)>'
vendor/bundle/ruby/3.3.0/bin/unicorn:25:in `load'
vendor/bundle/ruby/3.3.0/bin/unicorn:25:in `<main>'
3 לייקים

This was fixed :tada:

https://github.com/discourse/discourse/pull/33485

4 לייקים