Assert failed: No more than 1024 pending puts are allowed on a single channel. Consider using a windowed buffer

We recently upgraded to a new version as we were getting a bug when trying to add multiple filters to a question that was explicitly listed as fixed in the release notes.

Since moving to the new version we now seem to be getting a number of errors with the message.
Assert failed: No more than 1024 pending puts are allowed on a single channel. Consider using a windowed buffer. (< (.size puts) impl/MAX-QUEUE-SIZE)

I have noticed there is one other topic with this exact error, but it's from 2020 and just said it was resolved in an old version.

{
  "browser-info": {
    "language": "en-GB",
    "platform": "MacIntel",
    "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:109.0) Gecko/20100101 Firefox/112.0",
    "vendor": ""
  },
  "system-info": {
    "file.encoding": "UTF-8",
    "java.runtime.name": "OpenJDK Runtime Environment",
    "java.runtime.version": "11.0.19+7",
    "java.vendor": "Eclipse Adoptium",
    "java.vendor.url": "https://adoptium.net/",
    "java.version": "11.0.19",
    "java.vm.name": "OpenJDK 64-Bit Server VM",
    "java.vm.version": "11.0.19+7",
    "os.name": "Linux",
    "os.version": "5.10.179-166.674.amzn2.x86_64",
    "user.language": "en",
    "user.timezone": "Europe/London"
  },
  "metabase-info": {
    "databases": [
      "mysql"
    ],
    "hosting-env": "unknown",
    "application-database": "mysql",
    "application-database-details": {
      "database": {
        "name": "MySQL",
        "version": "5.7.12"
      },
      "jdbc-driver": {
        "name": "MariaDB Connector/J",
        "version": "2.7.6"
      }
    },
    "run-mode": "prod",
    "version": {
      "date": "2023-05-24",
      "tag": "v0.46.4",
      "branch": "release-x.46.x",
      "hash": "f858476"
    },
    "settings": {
      "report-timezone": null
    }
  }
}
1 Like
[7805d989-940d-4e53-9a0f-6a87dd828b6b] 2023-06-13T16:38:00+01:00 DEBUG metabase.server.middleware.log GET /api/public/dashboard/93406bf8-7768-4e1a-acf5-c7debb20da9c/dashcard/124/card/135 202 [ASYNC: completed] 6.0 s (17 DB calls) App DB connections: 1/15 Jetty threads: 3/50 (23 idle, 0 queued) (147 total active threads) Queries in flight: 2 (0 queued); mysql DB 2 connections: 14/15 (0 threads blocked)
[7805d989-940d-4e53-9a0f-6a87dd828b6b] 2023-06-13T16:38:00+01:00 ERROR metabase.query-processor.middleware.catch-exceptions Error processing query: Assert failed: No more than 1024 pending puts are allowed on a single channel. Consider using a windowed buffer.
(< (.size puts) impl/MAX-QUEUE-SIZE)
{:database_id 2,
 :started_at #t "2023-06-13T16:37:55.272358+01:00[Europe/London]",
 :via
 [{:status :failed,
   :class clojure.lang.ExceptionInfo,
   :error
   "Error reducing result rows: Assert failed: No more than 1024 pending puts are allowed on a single channel. Consider using a windowed buffer.\n(< (.size puts) impl/MAX-QUEUE-SIZE)",
   :stacktrace
   ["--> query_processor.context.default$default_reducef$fn__53368.invoke(default.clj:60)"
    "query_processor.context.default$default_reducef.invokeStatic(default.clj:57)"
    "query_processor.context.default$default_reducef.invoke(default.clj:49)"
    "query_processor.middleware.cache$run_query_with_cache$reducef_SINGLEQUOTE___69252$fn__69253.invoke(cache.clj:196)"
    "query_processor.middleware.cache.impl$do_with_serialization.invokeStatic(impl.clj:83)"
    "query_processor.middleware.cache.impl$do_with_serialization.invoke(impl.clj:54)"
    "query_processor.middleware.cache.impl$do_with_serialization.invokeStatic(impl.clj:73)"
    "query_processor.middleware.cache.impl$do_with_serialization.invoke(impl.clj:54)"
    "query_processor.middleware.cache$run_query_with_cache$reducef_SINGLEQUOTE___69252.invoke(cache.clj:192)"
    "query_processor.context$reducef.invokeStatic(context.clj:70)"
    "query_processor.context$reducef.invoke(context.clj:63)"
    "query_processor.context.default$default_runf$respond_STAR___53372.invoke(default.clj:69)"
    "driver.sql_jdbc.execute$execute_reducible_query.invokeStatic(execute.clj:513)"
    "driver.sql_jdbc.execute$execute_reducible_query.invoke(execute.clj:489)"
    "driver.sql_jdbc.execute$execute_reducible_query.invokeStatic(execute.clj:497)"
    "driver.sql_jdbc.execute$execute_reducible_query.invoke(execute.clj:489)"
    "driver.sql_jdbc$fn__105125.invokeStatic(sql_jdbc.clj:63)"
    "driver.sql_jdbc$fn__105125.invoke(sql_jdbc.clj:61)"
    "query_processor.context$executef.invokeStatic(context.clj:60)"
    "query_processor.context$executef.invoke(context.clj:49)"
    "query_processor.context.default$default_runf.invokeStatic(default.clj:68)"
    "query_processor.context.default$default_runf.invoke(default.clj:66)"
    "query_processor.context$runf.invokeStatic(context.clj:46)"
    "query_processor.context$runf.invoke(context.clj:40)"
    "query_processor.reducible$identity_qp.invokeStatic(reducible.clj:15)"
    "query_processor.reducible$identity_qp.invoke(reducible.clj:12)"
    "query_processor.middleware.cache$run_query_with_cache.invokeStatic(cache.clj:197)"
    "query_processor.middleware.cache$run_query_with_cache.invoke(cache.clj:182)"
    "query_processor.middleware.cache$maybe_return_cached_results$maybe_return_cached_results_STAR___69265.invoke(cache.clj:223)"
    "query_processor.middleware.permissions$check_query_permissions$fn__64737.invoke(permissions.clj:126)"
    "query_processor.middleware.mbql_to_native$mbql__GT_native$fn__68156.invoke(mbql_to_native.clj:24)"
    "query_processor$fn__70784$combined_post_process__70789$combined_post_process_STAR___70790.invoke(query_processor.clj:243)"
    "query_processor$fn__70784$combined_pre_process__70785$combined_pre_process_STAR___70786.invoke(query_processor.clj:240)"
    "query_processor.middleware.resolve_database_and_driver$resolve_database_and_driver$fn__69176$fn__69181.invoke(resolve_database_and_driver.clj:36)"
    "driver$do_with_driver.invokeStatic(driver.clj:90)"
    "driver$do_with_driver.invoke(driver.clj:86)"
    "query_processor.middleware.resolve_database_and_driver$resolve_database_and_driver$fn__69176.invoke(resolve_database_and_driver.clj:35)"
    "query_processor.middleware.fetch_source_query$resolve_card_id_source_tables$fn__65046.invoke(fetch_source_query.clj:310)"
    "query_processor.middleware.store$initialize_store$fn__65224$fn__65225.invoke(store.clj:12)"
    "query_processor.store$do_with_store.invokeStatic(store.clj:47)"
    "query_processor.store$do_with_store.invoke(store.clj:41)"
    "query_processor.middleware.store$initialize_store$fn__65224.invoke(store.clj:11)"
    "query_processor.middleware.normalize_query$normalize$fn__69465.invoke(normalize_query.clj:25)"
    "query_processor.middleware.constraints$add_default_userland_constraints$fn__66402.invoke(constraints.clj:54)"
    "query_processor.middleware.process_userland_query$process_userland_query$fn__69401.invoke(process_userland_query.clj:151)"
    "query_processor.middleware.catch_exceptions$catch_exceptions$fn__69778.invoke(catch_exceptions.clj:171)"
    "query_processor.reducible$async_qp$qp_STAR___59546$thunk__59548.invoke(reducible.clj:103)"
    "query_processor.reducible$async_qp$qp_STAR___59546$fn__59550.invoke(reducible.clj:108)"],
   :error_type :qp,
   :ex-data {:type :qp}}],
 :error_type :qp,
 :json_query
 {:constraints {:max-results 10000, :max-results-bare-rows 2000},
  :type :native,
  :middleware {:js-int-to-string? true, :ignore-cached-results? false},
  :native
  {:query
   "SELECT date(`users`.`created_at`) AS `created_at`, count(*) AS `count`\nFROM `users`\nWHERE (date(`users`.`created_at`) BETWEEN date(date_add(now(), INTERVAL -1 day))\n   AND date(now()) AND `users`.`type` = 'admin')\nGROUP BY date(`users`.`created_at`)\nORDER BY date(`users`.`created_at`) ASC",
   :template-tags {}},
  :database 2,
  :parameters [],
  :async? true,
  :cache-ttl 17},
 :status :failed,
 :class java.lang.AssertionError,
 :stacktrace
 ["clojure.core.async.impl.channels.ManyToManyChannel.put_BANG_(channels.clj:157)"
  "clojure.core.async$put_BANG_.invokeStatic(async.clj:201)"
  "clojure.core.async$put_BANG_.invoke(async.clj:189)"
  "--> events$publish_event_BANG_.invokeStatic(events.clj:73)"
  "events$publish_event_BANG_.invoke(events.clj:66)"
  "query_processor.middleware.process_userland_query$add_and_save_execution_info_xform_BANG_$execution_info_rf_STAR___69392.invoke(process_userland_query.clj:94)"
  "query_processor.middleware.results_metadata$insights_xform$combine__68138.invoke(results_metadata.clj:67)"
  "query_processor.reducible$combine_additional_reducing_fns$combine_additional_reducing_fns_rf_STAR___59569.invoke(reducible.clj:199)"
  "query_processor.middleware.add_rows_truncated$add_rows_truncated_xform$fn__66815.invoke(add_rows_truncated.clj:27)"
  "query_processor.middleware.format_rows$format_rows_xform$fn__69682.invoke(format_rows.clj:71)"
  "query_processor.middleware.annotate$add_column_info_xform$combine__61643.invoke(annotate.clj:689)"
  "query_processor.reducible$combine_additional_reducing_fns$combine_additional_reducing_fns_rf_STAR___59569.invoke(reducible.clj:199)"
  "query_processor.middleware.cache$save_results_xform$fn__69212.invoke(cache.clj:116)"
  "query_processor.context.default$default_reducef$fn__53368.invoke(default.clj:58)"
  "query_processor.context.default$default_reducef.invokeStatic(default.clj:57)"
  "query_processor.context.default$default_reducef.invoke(default.clj:49)"
  "query_processor.middleware.cache$run_query_with_cache$reducef_SINGLEQUOTE___69252$fn__69253.invoke(cache.clj:196)"
  "query_processor.middleware.cache.impl$do_with_serialization.invokeStatic(impl.clj:83)"
  "query_processor.middleware.cache.impl$do_with_serialization.invoke(impl.clj:54)"
  "query_processor.middleware.cache.impl$do_with_serialization.invokeStatic(impl.clj:73)"
  "query_processor.middleware.cache.impl$do_with_serialization.invoke(impl.clj:54)"
  "query_processor.middleware.cache$run_query_with_cache$reducef_SINGLEQUOTE___69252.invoke(cache.clj:192)"
  "query_processor.context$reducef.invokeStatic(context.clj:70)"
  "query_processor.context$reducef.invoke(context.clj:63)"
  "query_processor.context.default$default_runf$respond_STAR___53372.invoke(default.clj:69)"
  "driver.sql_jdbc.execute$execute_reducible_query.invokeStatic(execute.clj:513)"
  "driver.sql_jdbc.execute$execute_reducible_query.invoke(execute.clj:489)"
  "driver.sql_jdbc.execute$execute_reducible_query.invokeStatic(execute.clj:497)"
  "driver.sql_jdbc.execute$execute_reducible_query.invoke(execute.clj:489)"
  "driver.sql_jdbc$fn__105125.invokeStatic(sql_jdbc.clj:63)"
  "driver.sql_jdbc$fn__105125.invoke(sql_jdbc.clj:61)"
  "query_processor.context$executef.invokeStatic(context.clj:60)"
  "query_processor.context$executef.invoke(context.clj:49)"
  "query_processor.context.default$default_runf.invokeStatic(default.clj:68)"
  "query_processor.context.default$default_runf.invoke(default.clj:66)"
  "query_processor.context$runf.invokeStatic(context.clj:46)"
  "query_processor.context$runf.invoke(context.clj:40)"
  "query_processor.reducible$identity_qp.invokeStatic(reducible.clj:15)"
  "query_processor.reducible$identity_qp.invoke(reducible.clj:12)"
  "query_processor.middleware.cache$run_query_with_cache.invokeStatic(cache.clj:197)"
  "query_processor.middleware.cache$run_query_with_cache.invoke(cache.clj:182)"
  "query_processor.middleware.cache$maybe_return_cached_results$maybe_return_cached_results_STAR___69265.invoke(cache.clj:223)"
  "query_processor.middleware.permissions$check_query_permissions$fn__64737.invoke(permissions.clj:126)"
  "query_processor.middleware.mbql_to_native$mbql__GT_native$fn__68156.invoke(mbql_to_native.clj:24)"
  "query_processor$fn__70784$combined_post_process__70789$combined_post_process_STAR___70790.invoke(query_processor.clj:243)"
  "query_processor$fn__70784$combined_pre_process__70785$combined_pre_process_STAR___70786.invoke(query_processor.clj:240)"
  "query_processor.middleware.resolve_database_and_driver$resolve_database_and_driver$fn__69176$fn__69181.invoke(resolve_database_and_driver.clj:36)"
  "driver$do_with_driver.invokeStatic(driver.clj:90)"
  "driver$do_with_driver.invoke(driver.clj:86)"
  "query_processor.middleware.resolve_database_and_driver$resolve_database_and_driver$fn__69176.invoke(resolve_database_and_driver.clj:35)"
  "query_processor.middleware.fetch_source_query$resolve_card_id_source_tables$fn__65046.invoke(fetch_source_query.clj:310)"
  "query_processor.middleware.store$initialize_store$fn__65224$fn__65225.invoke(store.clj:12)"
  "query_processor.store$do_with_store.invokeStatic(store.clj:47)"
  "query_processor.store$do_with_store.invoke(store.clj:41)"
  "query_processor.middleware.store$initialize_store$fn__65224.invoke(store.clj:11)"
  "query_processor.middleware.normalize_query$normalize$fn__69465.invoke(normalize_query.clj:25)"
  "query_processor.middleware.constraints$add_default_userland_constraints$fn__66402.invoke(constraints.clj:54)"
  "query_processor.middleware.process_userland_query$process_userland_query$fn__69401.invoke(process_userland_query.clj:151)"
  "query_processor.middleware.catch_exceptions$catch_exceptions$fn__69778.invoke(catch_exceptions.clj:171)"
  "query_processor.reducible$async_qp$qp_STAR___59546$thunk__59548.invoke(reducible.clj:103)"
  "query_processor.reducible$async_qp$qp_STAR___59546$fn__59550.invoke(reducible.clj:108)"],
 :card_id 131,
 :context :public-dashboard,
 :error
 "Assert failed: No more than 1024 pending puts are allowed on a single channel. Consider using a windowed buffer.\n(< (.size puts) impl/MAX-QUEUE-SIZE)",
 :row_count 0,
 :running_time 0,
 :data {:rows [], :cols []}}

I think that the issue is that your MySQL app db is very old:

The minimum recommended version is MySQL 5.7.7 or MariaDB 10.2.2, and the utf8mb4 character set is required. You can change the application database to use MySQL using environment variables like this:

5.7.12 is newer than 5.7.7 which is the minimum version.

What’s the version of MySQL you’re querying? Not the app db, the dw

Also 5.7.12

mmmmmmmmmmmm wait, how many users do you have hitting your public dashboards? If I read correctly this is an issue in our Ring middleware so it's a problem in the web server

Not a huge number, it's a "public" dashboard but it's embedded in an internal web app our company use, behind a login. So maybe around 60 users max across the course of a day.

Is there any update to this?
Is it a confirmed issue in Metabase, or is there something we can do to resolve the issue?

Unfortunately no since we can’t reproduce. You’re the only user that hit this since the report from many years back

We had this same error when we upgraded Metabase to version v0.46.6.1 to address the security vulnerabilities shared in this blog post: Please upgrade your Metabase immediately

We have opened up a bug ticket with them to get help to address this issue.

I will share updates.

I just replied: the change has nothing to do on that end