{"record":{"id":"03166bd434340a4f","repo":"xpipe-io/xpipe","slug":"no-saved-data-known-for-id-uuid","errorCode":null,"errorMessage":"No saved data known for id \" + uuid","messagePattern":"No saved data known for id \" \\+ uuid","errorType":"exception","errorClass":"BeaconClientException","httpStatus":400,"severity":"error","filePath":"app/src/main/java/io/xpipe/app/beacon/BlobManager.java","lineNumber":84,"sourceCode":"    }\n\n    public void store(UUID uuid, InputStream blob) throws IOException {\n        var file = TEMP.resolve(uuid.toString());\n        try (var fileOut = Files.newOutputStream(file)) {\n            blob.transferTo(fileOut);\n        }\n        fileBlobs.put(uuid, file);\n    }\n\n    public InputStream getBlob(UUID uuid) throws Exception {\n        var memory = memoryBlobs.get(uuid);\n        if (memory != null) {\n            return new ByteArrayInputStream(memory);\n        }\n\n        var found = fileBlobs.get(uuid);\n        if (found == null) {\n            throw new BeaconClientException(\"No saved data known for id \" + uuid);\n        }\n\n        return Files.newInputStream(found);\n    }\n}\n","sourceCodeStart":66,"sourceCodeEnd":90,"githubUrl":"https://github.com/xpipe-io/xpipe/blob/d85ca821baa46092a320ebb13546d7240adb74f8/app/src/main/java/io/xpipe/app/beacon/BlobManager.java#L66-L90","documentation":"BlobManager serves saved binary blobs either from an in-memory cache or from files on disk keyed by UUID. getBlob throws BeaconClientException when no blob with the requested UUID is registered in fileBlobs (and it wasn't in memory), i.e. the referenced saved data does not exist on this daemon.","triggerScenarios":"Requesting a blob UUID that was never stored, was deleted (blob cleanup / config removal), belongs to a different daemon instance, or was mistyped; reading a blob after the underlying store entry was removed.","commonSituations":"Automation reusing blob ids saved in an old config; blobs purged by housekeeping; pointing a client at a fresh XPipe installation that lacks the original blobs.","solutions":["Verify the blob UUID exists (re-fetch the store/connection entry that references it) before requesting the stream.","Re-upload/re-save the blob content if it was deleted, then use the newly returned UUID.","Confirm the request goes to the same daemon instance that originally stored the blob.","Handle the BeaconClientException by treating the blob as missing and regenerating it rather than crashing."],"exampleFix":"// before\nInputStream in = blobManager.getBlob(savedUuid); // throws if purged\n// after\nUUID id = savedUuid;\ntry {\n    InputStream in = blobManager.getBlob(id);\n} catch (BeaconClientException e) {\n    id = reuploadBlob(originalData); // recreate and persist new id\n    InputStream in = blobManager.getBlob(id);\n}","handlingStrategy":"validation","validationCode":"// confirm the blob id is referenced by a current store entry\nboolean blobKnown = storeEntry.getData().getUuids().contains(uuid);","typeGuard":"boolean isKnownBlob(UUID uuid, Map<UUID, Path> fileBlobs) {\n    return uuid != null && fileBlobs.containsKey(uuid);\n}","tryCatchPattern":"try {\n    return blobManager.getBlob(uuid);\n} catch (BeaconClientException e) {\n    return reuploadAndReturnStream(originalData); // regenerate missing blob\n}","preventionTips":["Regenerate blob ids after blob cleanup or storage resets","Store blob data alongside the id in the same configuration source","Never reuse blob UUIDs exported from another machine"],"tags":["beacon","blob","stale-uuid","missing-data"],"backgroundTag":"resource-not-found","analyzedSha":"d85ca821baa46092a320ebb13546d7240adb74f8","analyzedAt":"2026-09-06T14:30:08.251Z","contentChangedAt":"2026-09-06T14:30:08.251Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}