Skip to content

Collection listing returns 500 "Something went wrong while executing your query" for directories with large amount of file contents (GitHub GraphQL Blob.text limit) #423

Description

@tianshihao2003

Problem

Opening a collection whose directory contains many/large markdown files frequently fails with HTTP 500:

Something went wrong while executing your query on 2026-08-07T09:43:37Z. Please include B714:381F55:53211E3:116DD7D1:6A75A8C8 when
reporting this issue.

Refreshing the page succeeds (the folder-scope cache is then populated and works for ~1 day until the cache TTL expires).

Repro

  1. Connect any private repo with a content directory containing ~20-30 markdown files (>100KB total text) — e.g.
    src/content/posts/JavaWebAI/后端基础 with 29 files / 107KB.
  2. Open the collection listing for that path (either the root or browse into the subfolder).
  3. First request returns 500; refresh succeeds.

Key diagnostic: reproduced outside PagesCMS

I bypassed PagesCMS entirely and ran the exact same GraphQL query directly against the GitHub API with the repo owner's token:

query($owner: String!, $repo: String!, $expression: String!) {
  repository(owner: $owner, name: $repo) {
    object(expression: $expression) {
      ... on Tree {
        entries {
          name
          path
          type
          object {
            ... on Blob {
              text
              oid
              byteSize
            }
          }
        }
      }
    }
  }
}

Results:

┌───────────────────────────────────────────────────────────┬─────────────────────────────────────────────────────────────────────────┐
│                     Query expressionResult                                  │
├───────────────────────────────────────────────────────────┼─────────────────────────────────────────────────────────────────────────┤
│ main:src/content/moments (61 files, ~20KB total text)     │ ✅ Success, 63 entries returned                                         │
├───────────────────────────────────────────────────────────┼─────────────────────────────────────────────────────────────────────────┤
│ main:src/content/posts/JavaWebAI/后端基础 (29 files,      │ ❌ Something went wrong while executing your query (request id          │
│ ~107KB total text)                                        │ 1BEE:22F564:373DB47:3919CD7:6A75AD17)                                   │
└───────────────────────────────────────────────────────────┴─────────────────────────────────────────────────────────────────────────┘

So the failure is 100% GitHub-side and depends on the total size of the blobs requested in a single query (in
fetchCollectionDirectoryEntries in lib/github-cache-folders.ts, which fetches every file's full text in one GraphQL call).

Suggested fix

The fetchCollectionDirectoryEntries GraphQL query is fragile for large directories. Options:

1. Batch the blob fetchesfetch the tree without text first, then fetch file contents in small batches (e.g. 10-15 blobs per query), or
2. Add retry with backoff on this query (GitHub's documented workaround for this transient error), and/or
3. Fall back to the REST API (GET /repos/{owner}/{repo}/git/trees/{sha}?recursive=1 + GET /git/blobs/{oid}) when the GraphQL call fails.

Happy to provide any additional details or the full request ids if needed.

---

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions