When querying the most recent 30 minutes of data in Tempo, the Grafana query button gets stuck

My Tempo version is 2.8.1, deployed in scalable-single-binary mode with two nodes forming a memberlist cluster. Tempo is integrated with Grafana and can perform queries normally. However, when querying, if the time range includes the most recent 30 minutes, the query button in the upper right corner has a high probability of getting stuck in a loading state—that is, the spinning icon in front of the “Run query” button keeps spinning. This issue is especially noticeable when switching between the “Search” and “TraceQL” tabs. If querying data from more than 30 minutes ago, this problem does not occur.

This is the log when TraceQL is switched to Search, appear normal.


level=info ts=2025-12-15T03:02:49.997891549Z caller=tag_handlers.go:479 msg="search tag values request" tenant=single-tenant handler=SearchTagValuesV2 tag=resource.service.name query= range_seconds=0
level=info ts=2025-12-15T03:02:49.998069675Z caller=tag_handlers.go:479 msg="search tag values request" tenant=single-tenant handler=SearchTagValuesV2 tag=status query= range_seconds=0
level=debug ts=2025-12-15T03:02:49.998593167Z caller=server.go:2294     msg="GET /querier/api/v2/search/tag/status/values?start=0&end=0&q= (200) 62.035µs"
level=info ts=2025-12-15T03:02:49.99922612Z caller=tag_handlers.go:489  msg="search tag values response" tenant=single-tenant handler=SearchTagValuesV2 tag=status query= range_seconds=0 duration_seconds=0.001151255 inspected_bytes=0 request_throughput=0 error=null
level=info ts=2025-12-15T03:02:49.999291615Z caller=handler.go:135      msg="query stats" tenant=single-tenant method=GET traceID= url="/api/v2/search/tag/status/values?limit=1000" duration=1.233218ms response_size=130 status=200
level=debug ts=2025-12-15T03:02:49.99933539Z caller=server.go:2294      msg="GET /api/v2/search/tag/status/values?limit=1000 (200) 1.344595ms"
level=info ts=2025-12-15T03:02:50.001483985Z caller=tag_handlers.go:479 msg="search tag values request" tenant=single-tenant handler=SearchTagValuesV2 tag=name query= range_seconds=0
level=debug ts=2025-12-15T03:02:50.006500605Z caller=server.go:1208 method=/tempopb.Querier/SearchTagValuesV2 duration=7.663045ms msg="gRPC (success)"
level=debug ts=2025-12-15T03:02:50.006764342Z caller=server.go:2294     msg="GET /querier/api/v2/search/tag/resource.service.name/values?start=0&end=0&q= (200) 8.343445ms"
level=info ts=2025-12-15T03:02:50.007062283Z caller=tag_handlers.go:489 msg="search tag values response" tenant=single-tenant handler=SearchTagValuesV2 tag=resource.service.name query= range_seconds=0 duration_seconds=0.009168261 inspected_bytes=338621 request_throughput=3.693404888887871e+07 error=null
level=info ts=2025-12-15T03:02:50.007109937Z caller=handler.go:135      msg="query stats" tenant=single-tenant method=GET traceID= url="/api/v2/search/tag/resource.service.name/values?limit=1000" duration=9.23309ms response_size=170 status=200
level=debug ts=2025-12-15T03:02:50.007145364Z caller=server.go:2294     msg="GET /api/v2/search/tag/resource.service.name/values?limit=1000 (200) 9.325131ms"
level=debug ts=2025-12-15T03:02:50.009084888Z caller=server.go:1208 method=/tempopb.Querier/SearchTagValuesV2 duration=6.89187ms msg="gRPC (success)"
level=debug ts=2025-12-15T03:02:50.009338049Z caller=server.go:2294     msg="GET /querier/api/v2/search/tag/name/values?start=0&end=0&q= (200) 7.540522ms"
level=info ts=2025-12-15T03:02:50.009766697Z caller=tag_handlers.go:489 msg="search tag values response" tenant=single-tenant handler=SearchTagValuesV2 tag=name query= range_seconds=0 duration_seconds=0.008279539 inspected_bytes=330464 request_throughput=3.9913333338969715e+07 error=null
level=info ts=2025-12-15T03:02:50.010497494Z caller=handler.go:135     msg="query stats" tenant=single-tenant method=GET traceID= url="/api/v2/search/tag/name/values?limit=1000" duration=8.336773ms response_size=1143 status=200
level=debug ts=2025-12-15T03:02:50.010649168Z caller=server.go:2294 msg="GET /api/v2/search/tag/name/values?limit=1000 (200) 9.215241ms"
level=info ts=2025-12-15T03:02:50.048191993Z caller=tag_handlers.go:479 msg="search tag values request" tenant=single-tenant handler=SearchTagValuesV2 tag=name query={} range_seconds=0
level=debug ts=2025-12-15T03:02:50.059459425Z caller=server.go:1208 method=/tempopb.Querier/SearchTagValuesV2 duration=10.580503ms msg="gRPC (success)"
level=debug ts=2025-12-15T03:02:50.059783282Z caller=server.go:2294 msg="GET /querier/api/v2/search/tag/name/values?start=0&end=0&q=%7B%7D (200) 11.198041ms"
level=info ts=2025-12-15T03:02:50.060306411Z caller=tag_handlers.go:489 msg="search tag values response" tenant=single-tenant handler=SearchTagValuesV2 tag=name query={} range_seconds=0 duration_seconds=0.012108926 inspected_bytes=330464 request_throughput=2.7290942235504616e+07 error=null
level=info ts=2025-12-15T03:02:50.060372962Z caller=handler.go:135 msg="query stats" tenant=single-tenant method=GET traceID= url="/api/v2/search/tag/name/values?q=%7B%7D&limit=1000" duration=12.167819ms response_size=1143 status=200
level=debug ts=2025-12-15T03:02:50.060491413Z caller=server.go:2294 msg="GET /api/v2/search/tag/name/values?q=%7B%7D&limit=1000 (200) 12.353971ms"
level=info ts=2025-12-15T03:02:50.145885468Z caller=search_handlers.go:212 msg="search request" tenant=single-tenant query={} range_seconds=3600 limit=20 spans_per_spanset=3
level=debug ts=2025-12-15T03:02:50.149104758Z caller=server.go:1208 method=/tempopb.Querier/SearchRecent duration=1.848062ms msg="gRPC (success)"
level=debug ts=2025-12-15T03:02:50.149359917Z caller=server.go:2294 msg="GET /querier/api/search?start=1765765970&end=1765766570&limit=20&spss=3&q=%7B%7D (200) 2.422583ms"
level=debug ts=2025-12-15T03:02:50.15015103Z caller=server.go:1208 method=/tempopb.Querier/SearchRecent duration=2.788911ms msg="gRPC (success)"
level=debug ts=2025-12-15T03:02:50.152601924Z caller=server.go:2294 msg="GET /querier/api/search?start=1765766570&end=1765767170&limit=20&spss=3&q=%7B%7D (200) 5.454989ms"
level=debug ts=2025-12-15T03:02:50.155416483Z caller=server.go:1208 method=/tempopb.Querier/SearchRecent duration=7.806219ms msg="gRPC (success)"
level=debug ts=2025-12-15T03:02:50.155802033Z caller=server.go:2294 msg="GET /querier/api/search?start=1765767170&end=1765767770&limit=20&spss=3&q=%7B%7D (200) 8.931401ms"
level=debug ts=2025-12-15T03:02:50.311741525Z caller=server.go:2294 msg="GET /querier/api/search?q=%7B%7D&limit=20&spss=3&start=1765764170&end=1765767770&blockID=47f31e62-2b0f-4dee-aae5-1d6d101f4491&pagesToSearch=1&size=58944&startPage=0&encoding=none&indexPageSize=0&totalRecords=1&dataEncoding=&version=vParquet3&footerSize=13741 (200) 163.874593ms"
level=debug ts=2025-12-15T03:02:50.313994017Z caller=server.go:2294 msg="GET /querier/api/search?q=%7B%7D&limit=20&spss=3&start=1765764170&end=1765767770&blockID=92c0b3a8-ecb6-44ac-82fd-cfd1d97a6eb3&pagesToSearch=1&size=44205&startPage=0&encoding=none&indexPageSize=0&totalRecords=1&dataEncoding=&version=vParquet3&footerSize=13765 (200) 167.100061ms"
level=debug ts=2025-12-15T03:02:50.316432696Z caller=server.go:1539 method=/frontend.Frontend/Process duration=23m11.809154301s msg=gRPC err="context canceled"
level=debug ts=2025-12-15T03:02:50.316465677Z caller=server.go:1539 method=/frontend.Frontend/Process duration=23m11.809132864s msg=gRPC err="4 errors: context canceled; context canceled; context canceled; context canceled"
level=info ts=2025-12-15T03:02:50.316466731Z caller=search_handlers.go:193 msg="search response" tenant=single-tenant query={} range_seconds=3600 duration_seconds=0.170604714 request_throughput=2.2865136071210788e+06 total_requests=17 total_blockBytes=754165 total_blocks=14 completed_requests=2 inspected_bytes=390090 inspected_traces=0 inspected_spans=0 status_code=200 error=null
level=debug ts=2025-12-15T03:02:50.316437284Z caller=server.go:1539 method=/frontend.Frontend/Process duration=1m4.235257657s msg=gRPC err="7 errors: context canceled; context canceled; context canceled; context canceled; context canceled; context canceled; context canceled"
level=debug ts=2025-12-15T03:02:50.31652486Z caller=server.go:1539 method=/frontend.Frontend/Process duration=23m11.809428624s msg=gRPC err="context canceled"
level=info ts=2025-12-15T03:02:50.316555772Z caller=handler.go:135 msg="query stats" tenant=single-tenant method=GET traceID= url="/api/search?q=%7B%7D&limit=20&spss=3&start=1765764170&end=1765767770" duration=170.668575ms response_size=9802 status=200
level=debug ts=2025-12-15T03:02:50.316952177Z caller=server.go:2294 msg="GET /querier/api/search?q=%7B%7D&limit=20&spss=3&start=1765764170&end=1765767770&blockID=f348a830-1c3c-40be-813f-4b49d8a51fa0&pagesToSearch=1&size=61096&startPage=0&encoding=none&indexPageSize=0&totalRecords=1&dataEncoding=&version=vParquet3&footerSize=13741 (200) 169.432781ms"
level=debug ts=2025-12-15T03:02:50.316978869Z caller=server.go:2294 msg="GET /querier/api/search?q=%7B%7D&limit=20&spss=3&start=1765764170&end=1765767770&blockID=38736228-f672-4869-a460-d77be1545539&pagesToSearch=1&size=47702&startPage=0&encoding=none&indexPageSize=0&totalRecords=1&dataEncoding=&version=vParquet3&footerSize=13827 (200) 169.220584ms"
level=debug ts=2025-12-15T03:02:50.317018108Z caller=server.go:2294 msg="GET /querier/api/search?q=%7B%7D&limit=20&spss=3&start=1765764170&end=1765767770&blockID=3fac42af-5536-4da2-b5a9-e2ea09f909b8&pagesToSearch=1&size=69261&startPage=0&encoding=none&indexPageSize=0&totalRecords=1&dataEncoding=&version=vParquet3&footerSize=13839 (200) 169.510254ms"
level=debug ts=2025-12-15T03:02:50.317084964Z caller=server.go:2294 msg="GET /querier/api/search?q=%7B%7D&limit=20&spss=3&start=1765764170&end=1765767770&blockID=8652e81c-66dc-4379-afa4-563dba79835e&pagesToSearch=1&size=70566&startPage=0&encoding=none&indexPageSize=0&totalRecords=1&dataEncoding=&version=vParquet3&footerSize=13851 (200) 169.503048ms"
level=debug ts=2025-12-15T03:02:50.31707526Z caller=server.go:2294 msg="GET  /api/search?q=%7B%7D&limit=20&spss=3&start=1765764170&end=1765767770 (200) 171.268151ms"
level=debug ts=2025-12-15T03:02:50.317125609Z caller=server.go:2294 msg="GET /querier/api/search?q=%7B%7D&limit=20&spss=3&start=1765764170&end=1765767770&blockID=89ba62be-3dce-4fc2-a185-bb4acaa5073e&pagesToSearch=1&size=45839&startPage=0&encoding=none&indexPageSize=0&totalRecords=1&dataEncoding=&version=vParquet3&footerSize=13730 (200) 169.889824ms"
level=debug ts=2025-12-15T03:02:50.31737117Z caller=server.go:2294 msg="GET  /querier/api/search?q=%7B%7D&limit=20&spss=3&start=1765764170&end=1765767770&blockID=50e6fac7-cb6d-4ae5-ae7f-d548836fd5e1&pagesToSearch=1&size=41278&startPage=0&encoding=none&indexPageSize=0&totalRecords=1&dataEncoding=&version=vParquet3&footerSize=13687 (200) 170.009867ms"
level=debug ts=2025-12-15T03:02:50.317432157Z caller=server.go:2294 msg="GET /querier/api/search?q=%7B%7D&limit=20&spss=3&start=1765764170&end=1765767770&blockID=2ad1f323-9e20-4b85-8d9c-3365a75c3c59&pagesToSearch=1&size=42616&startPage=0&encoding=none&indexPageSize=0&totalRecords=1&dataEncoding=&version=vParquet3&footerSize=13729 (200) 169.683512ms"
level=debug ts=2025-12-15T03:02:50.317451771Z caller=server.go:2294 msg="GET /querier/api/search?q=%7B%7D&limit=20&spss=3&start=1765764170&end=1765767770&blockID=c232c327-9c82-4951-bf04-2c2db6049303&pagesToSearch=1&size=45655&startPage=0&encoding=none&indexPageSize=0&totalRecords=1&dataEncoding=&version=vParquet3&footerSize=13840 (200) 169.551153ms"
level=debug ts=2025-12-15T03:02:50.317469725Z caller=server.go:2294 msg="GET /querier/api/search?q=%7B%7D&limit=20&spss=3&start=1765764170&end=1765767770&blockID=64ab8a1e-efcc-44b2-b7b6-cdc311dd1114&pagesToSearch=1&size=63902&startPage=0&encoding=none&indexPageSize=0&totalRecords=1&dataEncoding=&version=vParquet3&footerSize=13742 (200) 169.557917ms"
level=debug ts=2025-12-15T03:02:50.317488064Z caller=server.go:2294 msg="GET /querier/api/search?q=%7B%7D&limit=20&spss=3&start=1765764170&end=1765767770&blockID=ca3d67db-537d-443b-974e-3f165cb417fb&pagesToSearch=1&size=68447&startPage=0&encoding=none&indexPageSize=0&totalRecords=1&dataEncoding=&version=vParquet3&footerSize=13850 (200) 170.148645ms"
level=debug ts=2025-12-15T03:02:50.317509511Z caller=server.go:2294 msg="GET /querier/api/search?q=%7B%7D&limit=20&spss=3&start=1765764170&end=1765767770&blockID=e849356e-2afc-4778-a98f-7cd56a55d278&pagesToSearch=1&size=47402&startPage=0&encoding=none&indexPageSize=0&totalRecords=1&dataEncoding=&version=vParquet3&footerSize=13731 (200) 169.680478ms"
level=debug ts=2025-12-15T03:02:50.317767279Z caller=server.go:2294 msg="GET /querier/api/search?q=%7B%7D&limit=20&spss=3&start=1765764170&end=1765767770&blockID=e2178e4b-88fd-4d28-a30b-c5609b0e1d3e&pagesToSearch=1&size=47252&startPage=0&encoding=none&indexPageSize=0&totalRecords=1&dataEncoding=&version=vParquet3&footerSize=13823 (200) 170.237471ms"
level=info ts=2025-12-15T03:02:50.477744791Z caller=tag_handlers.go:479 msg="search tag values request" tenant=single-tenant handler=SearchTagValuesV2 tag=resource.service.name query={} range_seconds=0
level=info ts=2025-12-15T03:02:50.481296639Z caller=tag_handlers.go:479 msg="search tag values request" tenant=single-tenant handler=SearchTagValuesV2 tag=status query={} range_seconds=0
level=debug ts=2025-12-15T03:02:50.481758371Z caller=server.go:2294 msg="GET /querier/api/v2/search/tag/status/values?start=0&end=0&q=%7B%7D (200) 73.747µs"
level=info ts=2025-12-15T03:02:50.482044837Z caller=tag_handlers.go:489 msg="search tag values response" tenant=single-tenant handler=SearchTagValuesV2 tag=status query={} range_seconds=0 duration_seconds=0.000744258 inspected_bytes=0 request_throughput=0 error=null
level=info ts=2025-12-15T03:02:50.482097621Z caller=handler.go:135 msg="query stats" tenant=single-tenant method=GET traceID= url="/api/v2/search/tag/status/values?q=%7B%7D&limit=1000" duration=796.171µs response_size=130 status=200
level=debug ts=2025-12-15T03:02:50.482131967Z caller=server.go:2294 msg="GET /api/v2/search/tag/status/values?q=%7B%7D&limit=1000 (200) 885.577µs"
level=debug ts=2025-12-15T03:02:50.486121398Z caller=server.go:1208 method=/tempopb.Querier/SearchTagValuesV2 duration=7.569001ms msg="gRPC (success)"
level=debug ts=2025-12-15T03:02:50.486359042Z caller=server.go:2294 msg="GET /querier/api/v2/search/tag/resource.service.name/values?start=0&end=0&q=%7B%7D (200) 8.151872ms"
level=info ts=2025-12-15T03:02:50.486643531Z caller=tag_handlers.go:489 msg="search tag values response" tenant=single-tenant handler=SearchTagValuesV2 tag=resource.service.name query={} range_seconds=0 duration_seconds=0.008895658 inspected_bytes=338621 request_throughput=3.806587438500895e+07 error=null
level=info ts=2025-12-15T03:02:50.486706863Z caller=handler.go:135 msg="query stats" tenant=single-tenant method=GET traceID= url="/api/v2/search/tag/resource.service.name/values?q=%7B%7D&limit=1000" duration=8.95971ms response_size=170 status=200
level=debug ts=2025-12-15T03:02:50.486760831Z caller=server.go:2294 msg="GET /api/v2/search/tag/resource.service.name/values?q=%7B%7D&limit=1000 (200) 9.110633ms"

My configuration file is as follows:


target: scalable-single-binary
server:
  http_listen_port: 3200
  grpc_listen_port: 9095
  grpc_server_max_recv_msg_size: 107374182400
  grpc_server_max_send_msg_size: 107374182400
  http_server_read_timeout: 777s
  http_server_write_timeout: 600s

  log_level: debug

distributor:
  ring:
    kvstore:
      store: memberlist
    instance_addr: ${HOSTNAME}
    instance_port: 9095
  receivers:
    otlp:
      protocols:
        grpc:
          endpoint: "0.0.0.0:4317"
        http:
          endpoint: "0.0.0.0:4318"
  retry_after_on_resource_exhausted: 5s

ingester:
  lifecycler:
    ring:
      kvstore:
        store: memberlist
      replication_factor: 2
      heartbeat_timeout: 1m
    address: ${HOSTNAME}
    port: 9095
    heartbeat_period: 2s
    heartbeat_timeout: 3s
    observe_period: 5s
    join_after: 5s
    final_sleep: 5s
    min_ready_duration: 3s
  flush_all_on_shutdown: true
  flush_check_period: 60s 
  complete_block_timeout: 600s
  max_block_bytes: 5242880
  trace_idle_period: 60s 
  max_block_duration: 600s


query_frontend:
  search:
    default_result_limit: 100
    max_duration:  720h  
    duration_slo: 5s
    throughput_bytes_slo: 1073741824
    metadata_slo:
      duration_slo: 5s
      throughput_bytes_slo: 1073741824
  trace_by_id:
    duration_slo: 5s
  metrics:
    max_duration:  720h  
    concurrent_jobs: 100
  multi_tenant_queries_enabled: false

metrics_generator:
  ring:
    kvstore:
      store: memberlist
    instance_addr: ${HOSTNAME}
    instance_port: 9095
  processor:
    service_graphs:
      dimensions: [net.host.name, net.host.ip, net.peer.name, net.peer.ip, resource.container.id, http.method, http.route, host.name]
      enable_client_server_prefix: true
      enable_messaging_system_latency_histogram: true
      peer_attributes: []
      enable_virtual_node_label: true
      histogram_buckets: [1,2,3]
    span_metrics:
      dimensions: [server.address, client.address, network.peer.address, ip.address, protocol, host.name]
      intrinsic_dimensions:
        status_message: true
      enable_target_info: true
      histogram_buckets: [1,2,3]
    local_blocks:
      block:
        version: vParquet3
      filter_server_spans: true
      flush_to_storage: true
  storage:
    path: /export/tempo_data/metrics_storage
    remote_write:
      - url: http://<IP>:9090/api/v1/write
        send_exemplars: true
  traces_storage:
    path: /export/tempo_data/metrics_traces_storage
    version: vParquet3

querier:
  frontend_worker:
    frontend_address: ${HOSTNAME}:9095
    grpc_client_config:
      max_recv_msg_size: 10737418240
      max_send_msg_size: 10737418240
  search:
    query_timeout: 600s
  max_concurrent_queries: 30

compactor:
  ring:
    kvstore:
      store: memberlist
    instance_addr: ${HOSTNAME}
    instance_port: 9095
  compaction:
    compaction_cycle: 120s 
    compaction_window: 300s 
    block_retention: 72h
    compacted_block_retention: 1h  
    retention_concurrency: 10 
    v2_out_buffer_bytes: 20971520 
    max_block_bytes: 5242880

storage:
  trace:
    backend: azure
    azure:
      storage_account_name: <ACCOUNT>
      container_name: tempo
    blocklist_poll: 5m
    blocklist_poll_tolerate_consecutive_errors: 10
    blocklist_poll_tolerate_tenant_failures: 10
    wal:
      path: /export/tempo_data/storage_wal
      version: vParquet3
    block:
      version: vParquet3

memberlist:
  randomize_node_name: false
  retransmit_factor: 2
  gossip_nodes: 2
  message_history_buffer_bytes: 1000
  gossip_to_dead_nodes_time: 3s
  pull_push_interval: 3s
  leave_timeout: 3s
  bind_addr: ["0.0.0.0"]
  bind_port: 7946
  abort_if_cluster_join_fails: false
  join_members:
    - <IP1>:7946
    - <IP2>:7946

overrides:
  defaults:
    ingestion:
      rate_strategy: global
      max_traces_per_user: 1000000000000
    metrics_generator:
      processors:
        - local-blocks
        - service-graphs
        - span-metrics

No matter how these parameters are adjusted, the result remains the same.

query_frontend:
    search:
        default_result_limit: 100
        max_result_limit: 0
        max_duration: 720h0m0s
        query_backend_after: 15m0s
        query_ingesters_until: 30m0s

How to resolve the issue of the query button being stuck in a loading state?

When the query time range includes the period specified by query_frontend.search.query_ingesters_until, this issue occurs. In other words, the problem arises when querying the ingester component (in-memory data). If querying data from before that time, everything works normally.