dosubot[bot] commented on issue #29298:
URL: https://github.com/apache/superset/issues/29298#issuecomment-2177229699

   <!-- Greeting -->
   Hey there, @brantian! I'm a bot here to help you with bugs, questions, and 
becoming a contributor. I'm here to assist you while you wait for a human 
maintainer.
   
   <!-- Answer -->
   The issue you're encountering with different cache keys for chart thumbnails 
versus dashboard thumbnails likely stems from a discrepancy in how the cache 
keys are generated and used in the code.
   
   For dashboards, the cache keys are consistent, but for charts, it seems 
there is a mismatch. This can be due to differences in the key prefix or the 
way the keys are constructed in the code.
   
   Here are a few steps to troubleshoot and potentially resolve this issue:
   
   1. **Check Cache Key Prefixes**:
      Ensure that the cache key prefixes for charts and dashboards are 
consistent. In your `superset_config.py`, you have:
   
      ```python
      THUMBNAIL_CACHE_CONFIG: CacheConfig = {
          'CACHE_TYPE': 'RedisCache',
          'CACHE_DEFAULT_TIMEOUT': 7 * 86400,  # 7 days
          'CACHE_KEY_PREFIX': 'thumbnail_',
          'CACHE_REDIS_HOST': REDIS_HOST,
          'CACHE_REDIS_PORT': REDIS_PORT,
          'CACHE_REDIS_DB': REDIS_CELERY_DB
      }
      ```
   
      Verify that the `CACHE_KEY_PREFIX` is correctly used in both the web app 
and Celery worker for chart thumbnails.
   
   2. **Review Thumbnail Cache Code**:
      Check the code in `superset/tasks/thumbnails.py` where the cache keys are 
generated and used. Ensure that the same logic is applied for both charts and 
dashboards.
   
      For example, in the `cache_chart_thumbnail` task, ensure the cache key is 
generated consistently:
   
      ```python
      @celery_app.task(name="cache_chart_thumbnail", soft_time_limit=300)
      def cache_chart_thumbnail(current_user, chart_id, force=False, 
thumb_size=None):
          from superset.models.slice import Slice
   
          if not thumbnail_cache:
              logging.warning("No cache set, refusing to compute")
              return
          chart = Slice.get(chart_id)
          url = get_url_path("Superset.slice", slice_id=chart.id)
   
          logger.info("Caching chart: %s", url)
          _, username = get_executor(
              executor_types=current_app.config["THUMBNAIL_EXECUTE_AS"],
              model=chart,
              current_user=current_user,
          )
          user = security_manager.find_user(username)
          with override_user(user):
              screenshot = ChartScreenshot(url, chart.digest)
              screenshot.compute_and_cache(
                  user=user,
                  cache=thumbnail_cache,
                  force=force,
                  thumb_size=thumb_size,
              )
      ```
   
   3. **Debug Cache Key Generation**:
      Add debug logs to print out the cache keys being generated in both the 
web app and Celery worker. This will help you identify where the discrepancy 
occurs.
   
   4. **Ensure Consistent Cache Configuration**:
      Make sure that the `THUMBNAIL_CACHE_CONFIG` is correctly applied in both 
the web app and Celery worker. Sometimes, configuration might not be correctly 
propagated to all parts of the application.
   
   By following these steps, you should be able to identify and resolve the 
issue with inconsistent cache keys for chart thumbnails. If the problem 
persists, you might need to dive deeper into the specific implementation 
details of the thumbnail caching logic in the Superset codebase 
<sup>[[1]](https://github.com/apache/superset/blob/master/superset/tasks/thumbnails.py)</sup><sup>[[2]](https://github.com/apache/superset/blob/master/docs/docs/configuration/cache.mdx)</sup>.
   
   
   <!-- Dosu Comment Footer -->
   *To continue talking to [Dosu](https://dosu.dev), mention @dosu.*
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscr...@superset.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscr...@superset.apache.org
For additional commands, e-mail: notifications-h...@superset.apache.org

Reply via email to