{"record":{"id":"5a46846a63d54e42","repo":"FlowiseAI/Flowise","slug":"failed-to-process-paper-result-title-error","errorCode":null,"errorMessage":"Failed to process paper \"${result.title}\": ${errorMessage}","messagePattern":"Failed to process paper \"(.+?)\": (.+?)","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"packages/components/nodes/tools/Arxiv/core.ts","lineNumber":246,"sourceCode":"                        // Download and extract PDF content\n                        const fullText = await this.downloadAndExtractPdf(result.id)\n\n                        const publishedDate = result.published ? new Date(result.published).toISOString().split('T')[0] : 'Unknown'\n\n                        // Format with metadata and full content\n                        const docContent = `Published: ${publishedDate}\\nTitle: ${result.title}\\nAuthors: ${result.authors.join(\n                            ', '\n                        )}\\nSummary: ${result.summary}\\n\\nFull Content:\\n${fullText}`\n\n                        const truncatedContent = this.docContentCharsMax ? docContent.substring(0, this.docContentCharsMax) : docContent\n\n                        docs.push(truncatedContent)\n                    } catch (error) {\n                        const errorMessage = error instanceof Error ? error.message : 'Unknown error'\n                        console.error(`Error processing paper ${result.title}:`, errorMessage)\n\n                        if (!this.continueOnFailure) {\n                            throw new Error(`Failed to process paper \"${result.title}\": ${errorMessage}`)\n                        } else {\n                            // Add error notice and continue with summary only\n                            const publishedDate = result.published ? new Date(result.published).toISOString().split('T')[0] : 'Unknown'\n                            const fallbackContent = `Published: ${publishedDate}\\nTitle: ${result.title}\\nAuthors: ${result.authors.join(\n                                ', '\n                            )}\\nSummary: ${result.summary}\\n\\n[ERROR: Could not load full content - ${errorMessage}]`\n                            docs.push(fallbackContent)\n                        }\n                    }\n                }\n\n                return docs.join('\\n\\n---\\n\\n')\n            }\n        } catch (error) {\n            const errorMessage = error instanceof Error ? error.message : 'Unknown error'\n            console.error('Arxiv search error:', errorMessage)\n            throw new Error(`Failed to search Arxiv: ${errorMessage}`)\n        }","sourceCodeStart":228,"sourceCodeEnd":264,"githubUrl":"https://github.com/FlowiseAI/Flowise/blob/abe4a8601a058047b350c260676826e21dd14101/packages/components/nodes/tools/Arxiv/core.ts#L228-L264","documentation":"Thrown in the per-paper processing loop of ArxivTool._call when downloadAndExtractPdf or document construction throws AND this.continueOnFailure is false. The title and the inner errorMessage are interpolated. The tool supports a graceful mode (continueOnFailure=true) that downgrades the same failure to a fallback summary, so this hard error is a deliberate 'strict mode' behavior.","triggerScenarios":"A PDF download fails (see error 349) or PDFLoader fails to parse the PDF while continueOnFailure is false; the loop hits any error during full-content ingestion and is configured to stop on first failure.","commonSituations":"Default configuration that requires every paper's full text; ingestion of a corpus containing one withdrawn or corrupt PDF; PDFjs version incompatibility causing parse errors.","solutions":["Set continueOnFailure=true on the tool so a single bad paper does not abort the whole batch — the tool will return a fallback summary for that paper.","Identify the failing paper by its title in the error and either exclude it or fix its source.","If full text is not required, set loadFullContent=false to skip PDF download entirely."],"exampleFix":"// before\nconst tool = new ArxivTool({ continueOnFailure: false, loadFullContent: true })\n// after\nconst tool = new ArxivTool({ continueOnFailure: true, loadFullContent: true })\n// failing papers now degrade to a summary with [ERROR: ...] instead of aborting","handlingStrategy":"fallback","validationCode":"function shouldContinueOnFailure(cfg: { loadFullContent?: boolean; continueOnFailure?: boolean }) {\n  // Recommend graceful mode whenever full content is enabled in batch runs\n  return cfg.loadFullContent ? Boolean(cfg.continueOnFailure) : true\n}","typeGuard":null,"tryCatchPattern":"try {\n  docs.push(await processPaper(result))\n} catch (e) {\n  if (!continueOnFailure) throw e\n  docs.push(fallbackSummary(result, e))\n}","preventionTips":["Set continueOnFailure=true for any batch ingestion to tolerate a few bad PDFs.","Disable loadFullContent when summaries are enough.","Log failing titles to a dead-letter list for offline retry."],"tags":["arxiv","pdf","runtime","batch","config"],"backgroundTag":null,"analyzedSha":"abe4a8601a058047b350c260676826e21dd14101","analyzedAt":"2026-08-12T16:04:40.823Z","schemaVersion":2},"datasetVersion":"2026-08-12T23:17:12.415Z"}