Skip to content
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

Provide meaningful modal if report profile tries to use dates out side the filtered date range #3616

Closed
MrGeneration opened this issue Jun 16, 2021 · 0 comments

Comments

@MrGeneration
Copy link
Member

Infos:

  • Used Zammad version: 4.1/stable
  • Installation method (source, package, ..): any
  • Operating system: any
  • Database + version: any
  • Elasticsearch version: any (verified on ES 7.x)
  • Browser + version: any
  • Ticket: #1088258

Expected behavior:

If the user selects a report profile that tries to check a time range (especially before absolute as example) that is not within the searched time range, Zammad will inform the user and not try to run a Elasticsearch query.

Actual behavior:

If the user configures a report profile to check for tickets before a datetime of your current lookup range in reporting, Zammad will throw the Error 500 returned by elasticsearch.

image

The reason:
If you're looking up a report for 2021 (timerange "from":"2020-12-31T23:00:00Z","to":"2021-12-31T22:59:59Z") but have a condition to check for created_at somewhere in 2020, Elasticsearch will retrun an illegal argument exception:

E, [2021-06-16T07:45:30.943635 #8595-110302320] ERROR -- : Unable to process GET request to elasticsearch URL 'http://127.0.0.1:9200/zammad_production_ticket/_doc/_search'. Check the response and payload for detailed information:

Response:
#<UserAgent::Result:0x00007fc18894b8c0 @success=false, @body="{\"error\":{\"root_cause\":[{\"type\":\"illegal_argument_exception\",\"reason\":\"[1606777200000] must be <= [1599584399999]\"}],\"type\":\"search_phase_execution_exception\",\"reason\":\"all shards failed\",\"phase\":\"query\",\"grouped\":true,\"failed_shards\":[{\"shard\":0,\"index\":\"zammad_production_ticket\",\"node\":\"NOc97AXITKW1AHceYi4aQQ\",\"reason\":{\"type\":\"illegal_argument_exception\",\"reason\":\"[1606777200000] must be <= [1599584399999]\"}}],\"caused_by\":{\"type\":\"illegal_argument_exception\",\"reason\":\"[1606777200000] must be <= [1599584399999]\",\"caused_by\":{\"type\":\"illegal_argument_exception\",\"reason\":\"[1606777200000] must be <= [1599584399999]\"}}},\"status\":400}", @data=nil, @code="400", @content_type=nil, @error="Client Error: #<Net::HTTPBadRequest 400 Bad Request readbody=true>!">

Payload:
{"query":{"bool":{"must":[{"terms":{"state_id":["1","2"]}},{"terms":{"group_id":["9","12","4","1","7"]}},{"range":{"created_at":{"lt":"2020-09-08T17:00:00.000Z"}}},{"range":{"created_at":{"from":"2020-12-31T23:00:00Z","to":"2021-12-31T22:59:59Z"}}}],"must_not":[{"term":{"state.name.keyword":"merged"}}]}},"size":0,"aggs":{"time_buckets":{"date_histogram":{"field":"created_at","interval":"month","time_zone":"Europe/Berlin"}}},"sort":[{"updated_at":{"order":"desc"}},"_score"]}

Payload size: 0M (RuntimeError)
/opt/zammad/lib/search_index_backend.rb:440:in `selectors'
/opt/zammad/lib/report/ticket_generic_time.rb:48:in `aggs'
/opt/zammad/app/controllers/reports_controller.rb:34:in `block in generate'
/opt/zammad/app/controllers/reports_controller.rb:25:in `each'
/opt/zammad/app/controllers/reports_controller.rb:25:in `generate'
/usr/local/rvm/gems/ruby-2.6.6/gems/actionpack-5.2.4.6/lib/action_controller/metal/basic_implicit_render.rb:6:in `send_action'
/usr/local/rvm/gems/ruby-2.6.6/gems/actionpack-5.2.4.6/lib/abstract_controller/base.rb:194:in `process_action'
/usr/local/rvm/gems/ruby-2.6.6/gems/actionpack-5.2.4.6/lib/action_controller/metal/rendering.rb:30:in `process_action'
/usr/local/rvm/gems/ruby-2.6.6/gems/actionpack-5.2.4.6/lib/abstract_controller/callbacks.rb:42:in `block in process_action'
/usr/local/rvm/gems/ruby-2.6.6/gems/activesupport-5.2.4.6/lib/active_support/callbacks.rb:109:in `block in run_callbacks'
/opt/zammad/app/controllers/application_controller/has_secure_content_security_policy_for_downloads.rb:18:in `block (4 levels) in <module:HasSecureContentSecurityPolicyForDownloads>'
/usr/local/rvm/gems/ruby-2.6.6/gems/activesupport-5.2.4.6/lib/active_support/notifications.rb:180:in `subscribed'
/opt/zammad/app/controllers/application_controller/has_secure_content_security_policy_for_downloads.rb:17:in `block (3 levels) in <module:HasSecureContentSecurityPolicyForDownloads>'
/usr/local/rvm/gems/ruby-2.6.6/gems/activesupport-5.2.4.6/lib/active_support/notifications.rb:180:in `subscribed'
/opt/zammad/app/controllers/application_controller/has_secure_content_security_policy_for_downloads.rb:16:in `block (2 levels) in <module:HasSecureContentSecurityPolicyForDownloads>'
/usr/local/rvm/gems/ruby-2.6.6/gems/activesupport-5.2.4.6/lib/active_support/callbacks.rb:118:in `instance_exec'
/usr/local/rvm/gems/ruby-2.6.6/gems/activesupport-5.2.4.6/lib/active_support/callbacks.rb:118:in `block in run_callbacks'
/opt/zammad/app/controllers/application_controller/handles_transitions.rb:14:in `handle_transaction'
/usr/local/rvm/gems/ruby-2.6.6/gems/activesupport-5.2.4.6/lib/active_support/callbacks.rb:118:in `block in run_callbacks'
/usr/local/rvm/gems/ruby-2.6.6/gems/activesupport-5.2.4.6/lib/active_support/callbacks.rb:136:in `run_callbacks'
/usr/local/rvm/gems/ruby-2.6.6/gems/actionpack-5.2.4.6/lib/abstract_controller/callbacks.rb:41:in `process_action'
/usr/local/rvm/gems/ruby-2.6.6/gems/actionpack-5.2.4.6/lib/action_controller/metal/rescue.rb:22:in `process_action'
/usr/local/rvm/gems/ruby-2.6.6/gems/actionpack-5.2.4.6/lib/action_controller/metal/instrumentation.rb:34:in `block in process_action'
/usr/local/rvm/gems/ruby-2.6.6/gems/activesupport-5.2.4.6/lib/active_support/notifications.rb:168:in `block in instrument'
/usr/local/rvm/gems/ruby-2.6.6/gems/activesupport-5.2.4.6/lib/active_support/notifications/instrumenter.rb:23:in `instrument'
/usr/local/rvm/gems/ruby-2.6.6/gems/activesupport-5.2.4.6/lib/active_support/notifications.rb:168:in `instrument'
/usr/local/rvm/gems/ruby-2.6.6/gems/actionpack-5.2.4.6/lib/action_controller/metal/instrumentation.rb:32:in `process_action'
/usr/local/rvm/gems/ruby-2.6.6/gems/actionpack-5.2.4.6/lib/action_controller/metal/params_wrapper.rb:256:in `process_action'
/usr/local/rvm/gems/ruby-2.6.6/gems/activerecord-5.2.4.6/lib/active_record/railties/controller_runtime.rb:24:in `process_action'
/usr/local/rvm/gems/ruby-2.6.6/gems/actionpack-5.2.4.6/lib/abstract_controller/base.rb:134:in `process'
/usr/local/rvm/gems/ruby-2.6.6/gems/actionview-5.2.4.6/lib/action_view/rendering.rb:32:in `process'
/usr/local/rvm/gems/ruby-2.6.6/gems/actionpack-5.2.4.6/lib/action_controller/metal.rb:191:in `dispatch'
/usr/local/rvm/gems/ruby-2.6.6/gems/actionpack-5.2.4.6/lib/action_controller/metal.rb:252:in `dispatch'
/usr/local/rvm/gems/ruby-2.6.6/gems/actionpack-5.2.4.6/lib/action_dispatch/routing/route_set.rb:52:in `dispatch'
/usr/local/rvm/gems/ruby-2.6.6/gems/actionpack-5.2.4.6/lib/action_dispatch/routing/route_set.rb:34:in `serve'
/usr/local/rvm/gems/ruby-2.6.6/gems/actionpack-5.2.4.6/lib/action_dispatch/journey/router.rb:52:in `block in serve'
/usr/local/rvm/gems/ruby-2.6.6/gems/actionpack-5.2.4.6/lib/action_dispatch/journey/router.rb:35:in `each'
/usr/local/rvm/gems/ruby-2.6.6/gems/actionpack-5.2.4.6/lib/action_dispatch/journey/router.rb:35:in `serve'
/usr/local/rvm/gems/ruby-2.6.6/gems/actionpack-5.2.4.6/lib/action_dispatch/routing/route_set.rb:840:in `call'
/usr/local/rvm/gems/ruby-2.6.6/gems/omniauth-1.9.1/lib/omniauth/strategy.rb:420:in `call_app!'
/usr/local/rvm/gems/ruby-2.6.6/gems/omniauth-saml-1.10.1/lib/omniauth/strategies/saml.rb:89:in `other_phase'
/usr/local/rvm/gems/ruby-2.6.6/gems/omniauth-1.9.1/lib/omniauth/strategy.rb:190:in `call!'
/usr/local/rvm/gems/ruby-2.6.6/gems/omniauth-1.9.1/lib/omniauth/strategy.rb:169:in `call'
/usr/local/rvm/gems/ruby-2.6.6/gems/omniauth-1.9.1/lib/omniauth/strategy.rb:192:in `call!'
/usr/local/rvm/gems/ruby-2.6.6/gems/omniauth-1.9.1/lib/omniauth/strategy.rb:169:in `call'
/usr/local/rvm/gems/ruby-2.6.6/gems/omniauth-1.9.1/lib/omniauth/strategy.rb:192:in `call!'
/usr/local/rvm/gems/ruby-2.6.6/gems/omniauth-1.9.1/lib/omniauth/strategy.rb:169:in `call'
/usr/local/rvm/gems/ruby-2.6.6/gems/omniauth-1.9.1/lib/omniauth/strategy.rb:192:in `call!'
/usr/local/rvm/gems/ruby-2.6.6/gems/omniauth-1.9.1/lib/omniauth/strategy.rb:169:in `call'
/usr/local/rvm/gems/ruby-2.6.6/gems/omniauth-1.9.1/lib/omniauth/strategy.rb:192:in `call!'
/usr/local/rvm/gems/ruby-2.6.6/gems/omniauth-1.9.1/lib/omniauth/strategy.rb:169:in `call'
/usr/local/rvm/gems/ruby-2.6.6/gems/omniauth-1.9.1/lib/omniauth/strategy.rb:192:in `call!'
/usr/local/rvm/gems/ruby-2.6.6/gems/omniauth-1.9.1/lib/omniauth/strategy.rb:169:in `call'
/usr/local/rvm/gems/ruby-2.6.6/gems/omniauth-1.9.1/lib/omniauth/strategy.rb:192:in `call!'
/usr/local/rvm/gems/ruby-2.6.6/gems/omniauth-1.9.1/lib/omniauth/strategy.rb:169:in `call'
/usr/local/rvm/gems/ruby-2.6.6/gems/omniauth-1.9.1/lib/omniauth/strategy.rb:192:in `call!'
/usr/local/rvm/gems/ruby-2.6.6/gems/omniauth-1.9.1/lib/omniauth/strategy.rb:169:in `call'
/usr/local/rvm/gems/ruby-2.6.6/gems/omniauth-1.9.1/lib/omniauth/strategy.rb:192:in `call!'
/usr/local/rvm/gems/ruby-2.6.6/gems/omniauth-1.9.1/lib/omniauth/strategy.rb:169:in `call'
/usr/local/rvm/gems/ruby-2.6.6/gems/omniauth-1.9.1/lib/omniauth/builder.rb:45:in `call'
/usr/local/rvm/gems/ruby-2.6.6/gems/rack-2.2.3/lib/rack/tempfile_reaper.rb:15:in `call'
/usr/local/rvm/gems/ruby-2.6.6/gems/rack-2.2.3/lib/rack/etag.rb:27:in `call'
/usr/local/rvm/gems/ruby-2.6.6/gems/rack-2.2.3/lib/rack/conditional_get.rb:40:in `call'
/usr/local/rvm/gems/ruby-2.6.6/gems/rack-2.2.3/lib/rack/head.rb:12:in `call'
/usr/local/rvm/gems/ruby-2.6.6/gems/actionpack-5.2.4.6/lib/action_dispatch/http/content_security_policy.rb:18:in `call'
/usr/local/rvm/gems/ruby-2.6.6/gems/rack-2.2.3/lib/rack/session/abstract/id.rb:266:in `context'
/usr/local/rvm/gems/ruby-2.6.6/gems/rack-2.2.3/lib/rack/session/abstract/id.rb:260:in `call'
/usr/local/rvm/gems/ruby-2.6.6/gems/actionpack-5.2.4.6/lib/action_dispatch/middleware/cookies.rb:670:in `call'
/usr/local/rvm/gems/ruby-2.6.6/gems/actionpack-5.2.4.6/lib/action_dispatch/middleware/callbacks.rb:28:in `block in call'
/usr/local/rvm/gems/ruby-2.6.6/gems/activesupport-5.2.4.6/lib/active_support/callbacks.rb:98:in `run_callbacks'
/usr/local/rvm/gems/ruby-2.6.6/gems/actionpack-5.2.4.6/lib/action_dispatch/middleware/callbacks.rb:26:in `call'
/usr/local/rvm/gems/ruby-2.6.6/gems/actionpack-5.2.4.6/lib/action_dispatch/middleware/debug_exceptions.rb:61:in `call'
/usr/local/rvm/gems/ruby-2.6.6/gems/actionpack-5.2.4.6/lib/action_dispatch/middleware/show_exceptions.rb:33:in `call'
/usr/local/rvm/gems/ruby-2.6.6/gems/railties-5.2.4.6/lib/rails/rack/logger.rb:38:in `call_app'
/usr/local/rvm/gems/ruby-2.6.6/gems/railties-5.2.4.6/lib/rails/rack/logger.rb:26:in `block in call'
/usr/local/rvm/gems/ruby-2.6.6/gems/activesupport-5.2.4.6/lib/active_support/tagged_logging.rb:71:in `block in tagged'
/usr/local/rvm/gems/ruby-2.6.6/gems/activesupport-5.2.4.6/lib/active_support/tagged_logging.rb:28:in `tagged'
/usr/local/rvm/gems/ruby-2.6.6/gems/activesupport-5.2.4.6/lib/active_support/tagged_logging.rb:71:in `tagged'
/usr/local/rvm/gems/ruby-2.6.6/gems/railties-5.2.4.6/lib/rails/rack/logger.rb:26:in `call'
/usr/local/rvm/gems/ruby-2.6.6/gems/actionpack-5.2.4.6/lib/action_dispatch/middleware/remote_ip.rb:81:in `call'
/usr/local/rvm/gems/ruby-2.6.6/gems/actionpack-5.2.4.6/lib/action_dispatch/middleware/request_id.rb:27:in `call'
/usr/local/rvm/gems/ruby-2.6.6/gems/rack-2.2.3/lib/rack/method_override.rb:24:in `call'
/usr/local/rvm/gems/ruby-2.6.6/gems/rack-2.2.3/lib/rack/runtime.rb:22:in `call'
/usr/local/rvm/gems/ruby-2.6.6/gems/activesupport-5.2.4.6/lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call'
/usr/local/rvm/gems/ruby-2.6.6/gems/actionpack-5.2.4.6/lib/action_dispatch/middleware/executor.rb:14:in `call'
/usr/local/rvm/gems/ruby-2.6.6/gems/actionpack-5.2.4.6/lib/action_dispatch/middleware/static.rb:127:in `call'
/usr/local/rvm/gems/ruby-2.6.6/gems/rack-2.2.3/lib/rack/sendfile.rb:110:in `call'
/usr/local/rvm/gems/ruby-2.6.6/gems/railties-5.2.4.6/lib/rails/engine.rb:524:in `call'
/usr/local/rvm/gems/ruby-2.6.6/gems/railties-5.2.4.6/lib/rails/railtie.rb:190:in `public_send'
/usr/local/rvm/gems/ruby-2.6.6/gems/railties-5.2.4.6/lib/rails/railtie.rb:190:in `method_missing'
/usr/local/rvm/gems/ruby-2.6.6/gems/puma-4.3.8/lib/puma/configuration.rb:228:in `call'
/usr/local/rvm/gems/ruby-2.6.6/gems/puma-4.3.8/lib/puma/server.rb:718:in `handle_request'
/usr/local/rvm/gems/ruby-2.6.6/gems/puma-4.3.8/lib/puma/server.rb:472:in `process_client'
/usr/local/rvm/gems/ruby-2.6.6/gems/puma-4.3.8/lib/puma/server.rb:328:in `block in run'
/usr/local/rvm/gems/ruby-2.6.6/gems/puma-4.3.8/lib/puma/thread_pool.rb:134:in `block in spawn_thread'
/usr/local/rvm/gems/ruby-2.6.6/gems/logging-2.2.2/lib/logging/diagnostic_context.rb:474:in `block in create_with_logging_context'
I, [2021-06-16T07:45:30.946818 #8595-110302320]  INFO -- : Completed 500 Internal Server Error in 19ms (Views: 0.2ms | ActiveRecord: 3.0ms)

Steps to reproduce the behavior:

  • create a report profile with this condition: "ticket.created_at"=>{"operator"=>"before (absolute)", "value"=>"2020-09-08T17:00:00.000Z"}
  • get reporting from 2021 (year)

Note: This may affect other time based attributes as well which I did not test.

Yes I'm sure this is a bug and no feature request or a general question.

@mantas mantas self-assigned this Jun 21, 2021
@mantas mantas added this to To do in OLD Workflow Jun 21, 2021
@mantas mantas moved this from To do to In progress in OLD Workflow Jun 21, 2021
@mantas mantas moved this from In progress to Review in OLD Workflow Jul 5, 2021
@mantas mantas added this to the 4.1.1 milestone Aug 20, 2021
@thorsteneckel thorsteneckel modified the milestones: 4.1.1, 5.0.1 Sep 23, 2021
@mgruner mgruner modified the milestones: 5.0.2, 5.0.3 Oct 29, 2021
@rolfschmidt rolfschmidt moved this from Review to Backporting to stable in OLD Workflow Nov 29, 2021
@mantas mantas moved this from Backporting to stable to Done in OLD Workflow Nov 30, 2021
zammad-sync pushed a commit that referenced this issue Nov 30, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
No open projects
OLD Workflow
  
Done
Development

No branches or pull requests

4 participants