Persistent Files corrupted via Azure Blob Storage plugin bug??
I have a custom JsReport docker image (installed some custom Node modules) running under an Azure Webapp Container. There are 2 instances of this image, one for Production and one for Dev.
I keep the JsReport files in sync between Prod and Dev by Exporting and Importing between them (usually Dev to Prod once dev reports have been tested and stable).
I am using Azure Blob Containers for file persistence, one for Prod and one for Dev.
Today I made some small changes to my custom Nodemodule and pushed v1.2.0 of my custom JsReport docker image to my docker repo, and then changed my Dev container to use 1.2.0 tag, waited for it to boot up which is nice and quick, went to my JsReport studio folders to find the structure of files/folders had been significantly corrupted. Tried refresh, still corrupt. Went to the underlying Azure Blob container and sure enough the files/folders were corrupted.
This seems like a pretty big bug somewhere, I am unsure where though as this is the first time Ive seen it do this. Over the past couple of weeks I have been trialling various persistence mechanisms, firstly tried the built Azure Blob Mounts which I mounted a Blob Container into /jsreport/data - this was far too slow as all file access went over Blob accesses. Also tried MongoDb but ditched that for other reasons. This week I used the JsReport Azure Blob plugin which seemed good, was quick since it must copy files into local storage at startup and only write back to Azure Blob container when a file is written to, which would be next to never in a Prod environment with stable report sets. Now I am concerned there is an issue with this recommended approach.
Luckily I should be able to blow away the Dev Azure Blob container and copy back from Production container but I am very concerned that this might happen to both containers at some point. I also have a 1 hourly process which hits the Export API for each Prod & Dev to backup the entire JsReport studio and store in Azure Blob different containers, so I should have plenty of backups there also. It is tedious to work out which backup is most appropriate though.
The Prod (uncorrupt) folders look like this ..
whilst the Dev (corrupt) folders now look like this ..
you can see .js, .parameters, .test folders which should not be there (they only have the config.json file in them) and also all my tags have disappeared which explains the 2x white boxes after the Completed by System template compared to the green, blue tags in Prod.
Happy to run what ever tests I can to resolve this issue.
I'm very sorry for your troubles.
What version has your jsreport-fs-store-azure-storage-persistence?
We fixed in 1.0.4 one issue that could cause this, based on what I see on the images.
Thanks for quick response, my Docker image is based off of jsreport-2.3.0-full which is most recent as far as I can tell which contains 1.0.3 of the jsreport-fs-store-azure-storage-persistence module.
Additionally, it seems very reproducible as the undesired folders appear every time the Docker container is restarted.
Did the update help?
Hi Jan - yes it appears updating to 2.4.0 of the Docker image has fixed this issue - Thanks so much :)