node js fs.copyFileSync not fully copying files

Viewed 205

I ran into a very weird bug with fs.copyFileSync. at the end of the copy call, I check the size of source and destination and sometimes, the sizes do not match!

here is the code:

    fs.copyFileSync(sourceFilepath, destPath)

    let sourceStat = fs.statSync(sourceFilepath)
    let destStat = fs.statSync(destPath)
    if(sourceStat.size !== destStat.size) {
        throw new Error(`1. source destination file sizes do not match, src: ${sourceStat.size} dest: ${destStat.size}`)
    }

and here is the output:

127.0.0.1              | POST /api/file 200 491.799 ms - 167
terrainFileService     | POST /api/file 200 486.646 ms - 167
terrainFileService     | Finished uploading all files
terrainFileService     | terrainApi.addTerrainFile...
terrainFileService     | extension: tif
terrainFileService     | terrainApi.addTerrainFile done...
terrainFileService     | POST /api/file 200 489.242 ms - 167
127.0.0.1              | POST /api/file 200 498.612 ms - 167
terrainFileService     | Finished uploading all files
terrainFileService     | terrainApi.addTerrainFile...
terrainFileService     | extension: tif
terrainFileService     | terrainApi.addTerrainFile done...
terrainFileService     | POST /api/file 200 490.512 ms - 167
127.0.0.1              | POST /api/file 200 496.576 ms - 167
terrainFileService     | Finished uploading all files
terrainFileService     | terrainApi.addTerrainFile...
terrainFileService     | extension: tif
terrainFileService     | 1. source destination file sizes do not match, src: 49967321 dest: 49938432
terrainFileService     | POST /api/file 500 518.133 ms - 87
127.0.0.1              | POST /api/file 500 522.977 ms - 87
terrainFileService     | Finished uploading all files
terrainFileService     | terrainApi.addTerrainFile...
terrainFileService     | extension: tif
terrainFileService     | 1. source destination file sizes do not match, src: 51434105 dest: 51396608
127.0.0.1              | POST /api/file 500 476.689 ms - 87
terrainFileService     | POST /api/file 500 471.485 ms - 87
terrainFileService     | Finished uploading all files
terrainFileService     | terrainApi.addTerrainFile...
terrainFileService     | extension: tif
terrainFileService     | 1. source destination file sizes do not match, src: 54837525 dest: 54804480
127.0.0.1              | POST /api/file 500 562.032 ms - 87
terrainFileService     | POST /api/file 500 554.531 ms - 87
terrainFileService     | Finished uploading all files
terrainFileService     | terrainApi.addTerrainFile...
terrainFileService     | extension: tif
terrainFileService     | terrainApi.addTerrainFile done...
terrainFileService     | POST /api/file 200 600.344 ms - 167
127.0.0.1              | POST /api/file 200 630.117 ms - 167

I am running the code in a docker system inside a centos virtual machine. Any ideas to why this happens? copy pasting code using terminal works perfectly fine .

I added a while loop to copy again when not matching which fixed the issue but this is really weird.

0 Answers
Related