diff --git a/app/graphql/batch_loaders/award_emoji_votes_batch_loader.rb b/app/graphql/batch_loaders/award_emoji_votes_batch_loader.rb
index 7f46518ab5710886b8cb9570c5209158bcaf17ae..3195f8d83418dde397dbc89df97ab4f9a9cef57d 100644
--- a/app/graphql/batch_loaders/award_emoji_votes_batch_loader.rb
+++ b/app/graphql/batch_loaders/award_emoji_votes_batch_loader.rb
@@ -12,8 +12,9 @@ def self.load_downvotes(object, awardable_class: nil)
 
     def self.load_votes_for(object, vote_type, awardable_class: nil)
       awardable_class ||= object.class.name
+      batch_key = "#{object.class.base_class.name}-#{vote_type}"
 
-      BatchLoader::GraphQL.for(object.id).batch(key: "#{object.issuing_parent_id}-#{vote_type}") do |ids, loader, _args|
+      BatchLoader::GraphQL.for(object.id).batch(key: batch_key) do |ids, loader, _args|
         counts = AwardEmoji.votes_for_collection(ids, awardable_class).named(vote_type).index_by(&:awardable_id)
 
         ids.each do |id|
diff --git a/app/graphql/resolvers/namespaces/work_item_state_counts_resolver.rb b/app/graphql/resolvers/namespaces/work_item_state_counts_resolver.rb
index 099b509f77f3dee68245ab2a0cc8a8bfe5ec46eb..6752a6d314c699ea73bfa5e9b01c83aef100277c 100644
--- a/app/graphql/resolvers/namespaces/work_item_state_counts_resolver.rb
+++ b/app/graphql/resolvers/namespaces/work_item_state_counts_resolver.rb
@@ -22,6 +22,7 @@ def resolve(**args)
         Gitlab::IssuablesCountForState.new(
           finder(args),
           resource_parent,
+          fast_fail: true,
           store_in_redis_cache: true
         )
       end
diff --git a/ee/app/graphql/ee/batch_loaders/award_emoji_votes_batch_loader.rb b/ee/app/graphql/ee/batch_loaders/award_emoji_votes_batch_loader.rb
index 5750f4c315c5c620434464893339db976e71afe7..33eb886f9ee54e7a9517f0c6efc08aca67654084 100644
--- a/ee/app/graphql/ee/batch_loaders/award_emoji_votes_batch_loader.rb
+++ b/ee/app/graphql/ee/batch_loaders/award_emoji_votes_batch_loader.rb
@@ -13,7 +13,7 @@ def load_votes_for(object, vote_type, awardable_class: nil)
           awardable_class ||= object.class.name
 
           batch_object = [object.id, object&.sync_object&.id]
-          batch_key = "#{object.issuing_parent_id}-#{vote_type}"
+          batch_key = "#{object.class.base_class.name}-#{vote_type}"
 
           BatchLoader::GraphQL.for(batch_object).batch(key: batch_key) do |ids, loader, _args|
             counts_for_object = votes_for_collection(ids.flat_map(&:first), awardable_class, vote_type)
diff --git a/lib/gitlab/issuables_count_for_state.rb b/lib/gitlab/issuables_count_for_state.rb
index 13909ca2ce35f6171c92f722ddfdf4e67ea56838..092ca2894481afa927dbe081995a1ab9449ed3d6 100644
--- a/lib/gitlab/issuables_count_for_state.rb
+++ b/lib/gitlab/issuables_count_for_state.rb
@@ -143,8 +143,8 @@ def cache_options
 
     def params_include_filters?
       non_filtering_params = %i[
-        scope state sort group_id include_subgroups namespace_id
-        attempt_group_search_optimizations non_archived issue_types lookahead
+        scope state sort group_id include_subgroups include_descendants namespace_id
+        attempt_group_search_optimizations non_archived issue_types lookahead exclude_projects
       ]
 
       finder.params.except(*non_filtering_params).values.any?