Re[2]: Is it safe to update jar that are used for dynamic layers?

Alex Orlov ooo_saturn7 at mail.ru
Fri May 6 13:13:45 UTC 2022


Thank you very much for such detailed answer.
 
 
--
Best regards, Alex Orlov
 
  
>Пятница, 6 мая 2022, 16:09 +03:00 от Alan Bateman <alan.bateman at oracle.com>:
> 
>On 06/05/2022 12:26, Alex Orlov wrote:
>> Hello.
>>
>> Please, consider the following situation. We have /home/user/temp/foo.jar that is used in dynamically created jpms
>> layer bar.
>>
>> Could anyone say if it is safe to do the following: destroy layer bar, update /home/user/temp/foo.jar (modify some code in this jar)and create a new jpms layer (bar_2) that will use /home/user/temp/foo.jar.
>> This isn't really a module system issue, it's more about whether about
>you know if a JAR file is still open (and in use) and whether you can
>replace a JAR file that is open. In general it is not safe/reliable to
>do this. If you search JBS you will find dozens of bug reports on this
>topic, most going back many years. Many of the older bug reports are
>crashes because the central directory of a zip file was historically
>memory mapped and accessing a memory mapped region after the file has
>been replaced will typically SIGBUS. You'll also see bug reports on
>Windows with errors replacing zip or JAR files that are open. For the
>module system then you could use a weak reference and have it be queued
>when the module layer is GC'ed. However, I suspect this may not be
>timely enough for what you are doing and maybe you could look at using a
>unique name/location for each update instead.
>
>-Alan
 


More information about the jigsaw-dev mailing list