Azurite
Azurite copied to clipboard
Azurite holds a lock on the two directories `__blobstorage__` and `__queuestorage__`
Which service(blob, file, queue, table) does this issue concern?
blob, queue
Which version of the Azurite was used?
v3.29.0
Where do you get Azurite? (npm, DockerHub, NuGet, Visual Studio Code Extension)
Visual Studio Code Extension
What problem was encountered?
After starting and stopping Azurite in VSCode using the >Azurite: Start
and >Azurite: Close
commands, The extension still holds a lock on the two directories __blobstorage__
and __queuestorage__
. Consequently, I am unable to delete these directories, for example to start anew, until I close VS Code. This makes that process unnecessary frustrating.
Steps to reproduce the issue?
-
>Azurite: Start
-
>Azurite: Close
- Try deleting
__blobstorage__
and__queuestorage__
in the project root. Will fail. - Close VS Code.
- Try deleting
__blobstorage__
and__queuestorage__
in the project root. Will succeed.
Have you found a mitigation/solution?
No.
@danielniccoli
Thanks for raising this issue!
In VS Code, Azurite is running in VS code process, so close Azurite will close the http service but can't stop whole process.
When Azurite read/save content in local disk, it will create Stream like https://github.com/Azure/Azurite/blob/d544d16f910e490fdd9db5565459df701895308f/src/common/persistence/FSExtentStore.ts#L343. When create Stream Azurite will not set autoClose , and the autoClose default value is true (See link ). So Azurite depends on NodeJS to close the stream after finish using it. But currently it looks the stream is not closed and cause the related folder can't be deleted.
One workaround is: If you would like to have the content always be cleaned up after close Azurite, you can try to save the content in memory by enable following setting.
Thanks for mentioning the in-memory persisting option. This will work in most situations where I do not test crashes and replays.
Would it not be possible to manually close the stream when the close command is issued?
There are still not easy way to close the stream manually without changing the code, we need check all place to read the stream, and add code to close it after the last time using it. However, this might have regression risk, and we have other feature parity in hand, so this might won't be our recent priority.
It may just be enough to close the stream when issuing the Azurite Close command.
@EmmaZhu
Can your in progress PR https://github.com/Azure/Azurite/pull/2331 fix this issue? As we discussed, it looks also on closing file handles.
@blueww ,
Yes, still working on it, will need to resolve some test failures.