Server integration: rollback and troubleshooting

Restore affected server files with the patcher’s recorded backup, diagnose installation and search problems, and keep deployment configuration separate.

Tags: Server

[download original] [view raw text] — 4,410 bytes

On this page

Server integration: rollback and troubleshooting

Remove the integration

  1. Stop the running ThreadShelf instance with the normal server controls.

  2. From the suite source root, run:

sh

node server-patch/manage.mjs uninstall ../ThreadShelf
  1. Read the result. The patcher uses the recorded backup and expected installed state to restore the affected files.

  2. If the deployment uses compiled output, rebuild it with the upstream build command.

  3. Restart the server normally and verify ordinary browsing/search.

  4. Expect the desktop client’s search capability/limit notice to reflect the unpatched server again.

Do not remove or edit the patch backup while relying on it for restoration. If affected files were changed after installation, preserve that work and inspect the reported conflict instead of forcing a blind overwrite. A full server backup remains separate from this source-file rollback.

Uninstall the patch before upgrading upstream, then use the target matching the new source version. The shared dispatcher recognizes an existing 1.3.0 installation and its original backup after this directory reorganization.

Common installation problems

SymptomMeaning or action
Target path does not existCorrect and quote the path; run from the directory assumed by your relative argument
Expected source files are missingUse the verified source checkout, not a compiled-only package or a different directory
Unsupported version/hashWrong upstream baseline or affected local edits; preserve edits and obtain the supported source
Already appliedNo additional install is required; check/restart the correct instance
Backup conflictInspect the existing installation/backup state; do not merge backups from different source trees
Endpoint still unavailableCheck restart, build mode, actual process path and reverse-proxy route
Semantic results failCheck server model/index setup; patch installation does not configure embeddings
Search stops at a bounded first setClient may be connected to an unpatched instance; inspect that instance’s capability endpoint
Page cursor expiresStart the query again from the first page
Rollback refuses changesAffected installed files differ from the recorded state; preserve them before manual reconciliation

Snapshot limits and interrupted operations

A paged search is a stable snapshot: changes to indexed data appear only in a new search. Cursors expire after 15 minutes. The server caches at most eight sessions and 128 MiB of serialized results, with additional runtime overhead, and builds at most two snapshots concurrently. An oversized query returns HTTP 503 rather than silently truncating the exact result total; narrow the query or filters. An expired/evicted cursor returns HTTP 410; a cursor with changed query/filter arguments returns HTTP 400. Restart the search in these cases.

The patcher excludes concurrent operations with .threadshelf-local-suite-patch.lock. After an abrupt termination, first confirm no installer is running. Remove only the empty stale lock with rmdir, then rerun check. Do not recursively delete an unknown directory. Recognized partial operations with a complete backup can be recovered with uninstall; preserve unexpected files and consult the detailed server-patch/README.md before attempting recovery.

Keep configuration separate

The patcher does not manage .env, database directories, exports or model caches. If a server fails because an environment value is missing, repair that deployment according to the deployment documentation. Do not copy personal environment data into a public issue or the suite repository.

Report integration issues

Include the suite version, Node version, supported upstream commit, patch command, nonsecret diagnostic and whether the problem occurs before or after a server restart. Provide a small synthetic dataset for a search mismatch. Avoid posting real .env contents, access tokens, private hostnames, conversation text or unredacted logs.

Use the suite issue tracker for patcher/client integration. For an issue reproduced on unmodified ThreadShelf, link the relevant upstream project and state that the integration is not applied.