mirror of
https://github.com/Frooodle/Stirling-PDF.git
synced 2025-11-16 01:21:16 +01:00
size race condition fix
This commit is contained in:
parent
b4e33002b6
commit
a7f17947df
@ -41,7 +41,7 @@ public class CustomPDFDocumentFactory {
|
|||||||
|
|
||||||
// Memory thresholds and limits
|
// Memory thresholds and limits
|
||||||
|
|
||||||
private static final long SMALL_FILE_THRESHOLD = 10 * 1024 * 1024; // 10 MB
|
public static final long SMALL_FILE_THRESHOLD = 10 * 1024 * 1024; // 10 MB
|
||||||
// Files smaller than this threshold are loaded entirely in memory for better performance.
|
// Files smaller than this threshold are loaded entirely in memory for better performance.
|
||||||
// These files use IOUtils.createMemoryOnlyStreamCache() which keeps all document data in RAM.
|
// These files use IOUtils.createMemoryOnlyStreamCache() which keeps all document data in RAM.
|
||||||
// No temp files are created for document data, reducing I/O operations but consuming more
|
// No temp files are created for document data, reducing I/O operations but consuming more
|
||||||
|
|||||||
@ -309,6 +309,13 @@ public class PdfJsonConversionService {
|
|||||||
|
|
||||||
byte[] cachedPdfBytes = null;
|
byte[] cachedPdfBytes = null;
|
||||||
|
|
||||||
|
// Pre-read file bytes before loading PDDocument, since loading may delete the file
|
||||||
|
// (small files get loaded into memory and original is deleted)
|
||||||
|
// This is needed for lazy image caching where we need the bytes later
|
||||||
|
if (Files.size(workingPath) <= CustomPDFDocumentFactory.SMALL_FILE_THRESHOLD) {
|
||||||
|
cachedPdfBytes = Files.readAllBytes(workingPath);
|
||||||
|
}
|
||||||
|
|
||||||
try (PDDocument document = pdfDocumentFactory.load(workingPath, true)) {
|
try (PDDocument document = pdfDocumentFactory.load(workingPath, true)) {
|
||||||
int totalPages = document.getNumberOfPages();
|
int totalPages = document.getNumberOfPages();
|
||||||
// Only use lazy images for real async jobs where client can access the cache
|
// Only use lazy images for real async jobs where client can access the cache
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user