Reduce memory usage.
This commit is contained in:
parent
0ba15dd31a
commit
ec4d084972
|
@ -83,7 +83,7 @@ public class FullTextsController {
|
||||||
return ResponseEntity.ok()
|
return ResponseEntity.ok()
|
||||||
.contentType(MediaType.APPLICATION_OCTET_STREAM)
|
.contentType(MediaType.APPLICATION_OCTET_STREAM)
|
||||||
.header(HttpHeaders.CONTENT_DISPOSITION, "inline; filename=\"" + zstdName + "\"")
|
.header(HttpHeaders.CONTENT_DISPOSITION, "inline; filename=\"" + zstdName + "\"")
|
||||||
.body(new InputStreamResource(new BufferedInputStream(Files.newInputStream(Paths.get(zstdTarFileFullPath)), FilesCompressor.tenMb)));
|
.body(new InputStreamResource(new BufferedInputStream(Files.newInputStream(Paths.get(zstdTarFileFullPath)), FilesCompressor.bufferSize)));
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
String errorMsg = "Could not load the FileInputStream of the zstd-tar-file \"" + zstdTarFileFullPath + "\"!";
|
String errorMsg = "Could not load the FileInputStream of the zstd-tar-file \"" + zstdTarFileFullPath + "\"!";
|
||||||
logger.error(errorMsg, e);
|
logger.error(errorMsg, e);
|
||||||
|
@ -115,7 +115,7 @@ public class FullTextsController {
|
||||||
return ResponseEntity.ok()
|
return ResponseEntity.ok()
|
||||||
.contentType(MediaType.APPLICATION_OCTET_STREAM)
|
.contentType(MediaType.APPLICATION_OCTET_STREAM)
|
||||||
.header(HttpHeaders.CONTENT_DISPOSITION, "inline; filename=\"" + file.getName() + "\"")
|
.header(HttpHeaders.CONTENT_DISPOSITION, "inline; filename=\"" + file.getName() + "\"")
|
||||||
.body(new InputStreamResource(new BufferedInputStream(Files.newInputStream(Paths.get(fullTextFileFullPath)), FilesCompressor.tenMb)));
|
.body(new InputStreamResource(new BufferedInputStream(Files.newInputStream(Paths.get(fullTextFileFullPath)), FilesCompressor.bufferSize)));
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
String errorMsg = "Could not load the FileInputStream of the full-text-file \"" + fullTextFileFullPath + "\"!";
|
String errorMsg = "Could not load the FileInputStream of the full-text-file \"" + fullTextFileFullPath + "\"!";
|
||||||
logger.error(errorMsg, e);
|
logger.error(errorMsg, e);
|
||||||
|
|
|
@ -19,7 +19,7 @@ public class FilesCompressor {
|
||||||
|
|
||||||
private static final Logger logger = LoggerFactory.getLogger(FilesCompressor.class);
|
private static final Logger logger = LoggerFactory.getLogger(FilesCompressor.class);
|
||||||
|
|
||||||
public static final int tenMb = (10 * 1_048_576);
|
public static final int bufferSize = (5 * 1_048_576); // 5 Mb
|
||||||
|
|
||||||
|
|
||||||
public static File compressMultipleFilesIntoOne(long assignmentsCounter, int tarBatchCounter, List<String> filesToCompress, String baseDirectory)
|
public static File compressMultipleFilesIntoOne(long assignmentsCounter, int tarBatchCounter, List<String> filesToCompress, String baseDirectory)
|
||||||
|
@ -37,8 +37,8 @@ public class FilesCompressor {
|
||||||
String zStandardFileFullPath = tarFilePath + ".zstd";
|
String zStandardFileFullPath = tarFilePath + ".zstd";
|
||||||
File zStandardFile = new File(zStandardFileFullPath);
|
File zStandardFile = new File(zStandardFileFullPath);
|
||||||
|
|
||||||
try ( BufferedInputStream in = new BufferedInputStream(Files.newInputStream(Paths.get(tarFilePath)), tenMb);
|
try ( BufferedInputStream in = new BufferedInputStream(Files.newInputStream(Paths.get(tarFilePath)), bufferSize);
|
||||||
ZstdCompressorOutputStream zOut = new ZstdCompressorOutputStream(new BufferedOutputStream(Files.newOutputStream(zStandardFile.toPath())), tenMb) )
|
ZstdCompressorOutputStream zOut = new ZstdCompressorOutputStream(new BufferedOutputStream(Files.newOutputStream(zStandardFile.toPath())), bufferSize) )
|
||||||
{
|
{
|
||||||
int readByte;
|
int readByte;
|
||||||
while ( (readByte = in.read()) != -1 ) {
|
while ( (readByte = in.read()) != -1 ) {
|
||||||
|
@ -67,7 +67,7 @@ public class FilesCompressor {
|
||||||
int numTarredFiles = 0;
|
int numTarredFiles = 0;
|
||||||
File tarFile = new File(tarFileFullPath);
|
File tarFile = new File(tarFileFullPath);
|
||||||
|
|
||||||
try ( TarArchiveOutputStream taos = new TarArchiveOutputStream(new BufferedOutputStream(Files.newOutputStream(tarFile.toPath()), tenMb)) )
|
try ( TarArchiveOutputStream taos = new TarArchiveOutputStream(new BufferedOutputStream(Files.newOutputStream(tarFile.toPath()), bufferSize)) )
|
||||||
{
|
{
|
||||||
for ( String fileName : filesToTar ) {
|
for ( String fileName : filesToTar ) {
|
||||||
if ( addTarEntry(taos, fileName, baseDir) )
|
if ( addTarEntry(taos, fileName, baseDir) )
|
||||||
|
@ -88,10 +88,10 @@ public class FilesCompressor {
|
||||||
|
|
||||||
private static boolean addTarEntry(TarArchiveOutputStream taos, String fileName, String baseDir)
|
private static boolean addTarEntry(TarArchiveOutputStream taos, String fileName, String baseDir)
|
||||||
{
|
{
|
||||||
boolean shouldCloseEntry = false; // Useful in order to know if we should close the entry (an Exception may appear, and so we should not try to close it).
|
boolean shouldCloseEntry = false; // Useful in order to know if we should close the entry (an Exception may appear when initializing the stream, and so we should not try to close it).
|
||||||
|
|
||||||
Path fullFileNamePath = Paths.get(baseDir + fileName);
|
Path fullFileNamePath = Paths.get(baseDir + fileName);
|
||||||
try ( BufferedInputStream fis = new BufferedInputStream(Files.newInputStream(fullFileNamePath), tenMb) )
|
try ( BufferedInputStream fis = new BufferedInputStream(Files.newInputStream(fullFileNamePath), bufferSize) )
|
||||||
{
|
{
|
||||||
TarArchiveEntry entry = new TarArchiveEntry(fileName);
|
TarArchiveEntry entry = new TarArchiveEntry(fileName);
|
||||||
entry.setSize(Files.size(fullFileNamePath)); // Yes, tar requires that we set the size beforehand..
|
entry.setSize(Files.size(fullFileNamePath)); // Yes, tar requires that we set the size beforehand..
|
||||||
|
|
Loading…
Reference in New Issue