Starting Resin might be failed when a shared folder in Windows Server is set as storage.

 
A following error might be output and starting Resin might be failed when Resin is started after a war file is deployed if you have set a shared folder in Windows Server as storage. 
The error message is “There are no more files” in English. 
----
java.io.IOException: There are no more files. 
at java.base/java.io.WinNTFileSystem.canonicalizeWithPrefix0(Native Method)
at java.base/java.io.WinNTFileSystem.canonicalizeWithPrefix(WinNTFileSystem.java:461)
at java.base/java.io.WinNTFileSystem.canonicalize(WinNTFileSystem.java:432)
at java.base/java.io.File.getCanonicalPath(File.java:618)
at jp.co.intra_mart.system.service.client.file.StorageLocalFileImpl.getCanonicalPath(StorageLocalFileImpl.java:481)
at jp.co.intra_mart.system.service.client.file.StorageLocalFileImpl.checkAccessable(StorageLocalFileImpl.java:394)
at jp.co.intra_mart.system.service.client.file.StorageLocalFileImpl.<init>(StorageLocalFileImpl.java:91)
at jp.co.intra_mart.system.service.client.file.StorageLocalFileImpl.<init>(StorageLocalFileImpl.java:102)
at jdk.internal.reflect.GeneratedConstructorAccessor45.newInstance(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
at jp.co.intra_mart.foundation.service.client.file.AbstractStorage.<init>(AbstractStorage.java:108)
at jp.co.intra_mart.foundation.service.client.file.SystemStorage.<init>(SystemStorage.java:40)
at jp.co.intra_mart.system.service.provider.SystemStorageFileUpdater.copySystemStorage(SystemStorageFileUpdater.java:48)
at jp.co.intra_mart.system.service.provider.SystemStorageFileUpdater.copySystemStorage(SystemStorageFileUpdater.java:57)
at jp.co.intra_mart.system.service.provider.SystemStorageFileUpdater.copySystemStorage(SystemStorageFileUpdater.java:57)
at jp.co.intra_mart.system.service.provider.SystemStorageFileUpdater.copySystemStorage(SystemStorageFileUpdater.java:57)
at jp.co.intra_mart.system.service.provider.SystemStorageFileUpdater.copySystemStorage(SystemStorageFileUpdater.java:57)
at jp.co.intra_mart.system.service.provider.SystemStorageFileUpdater.copySystemStorage(SystemStorageFileUpdater.java:57)
at jp.co.intra_mart.system.service.provider.SystemStorageFileUpdater.copySystemStorage(SystemStorageFileUpdater.java:57)
at jp.co.intra_mart.system.service.provider.SystemStorageFileUpdater.copySystemStorage(SystemStorageFileUpdater.java:57)
at jp.co.intra_mart.system.service.provider.SystemStorageFileUpdater.copySystemStorage(SystemStorageFileUpdater.java:57)
at jp.co.intra_mart.system.service.provider.SystemStorageFileUpdater.update(SystemStorageFileUpdater.java:33)
at jp.co.intra_mart.system.service.impl.ServiceControllerImpl.startCoordinator(ServiceControllerImpl.java:189)
at jp.co.intra_mart.system.service.impl.ServiceControllerImpl.accept(ServiceControllerImpl.java:664)
at jp.co.intra_mart.system.service.impl.ServiceControllerImpl.start(ServiceControllerImpl.java:126)
at jp.co.intra_mart.foundation.service.ServiceController.start(ServiceController.java:49)
at jp.co.intra_mart.system.servlet.PlatformServletContextListener.contextInitialized(PlatformServletContextListener.java:125)
at com.caucho.server.webapp.WebApp.callInitializers(WebApp.java:3570)
at com.caucho.server.webapp.WebApp.startImpl(WebApp.java:3890)
at com.caucho.server.webapp.WebApp.access$700(WebApp.java:209)
at com.caucho.server.webapp.WebApp$StartupTask.run(WebApp.java:5476)
at com.caucho.env.thread2.ResinThread2.runTasks(ResinThread2.java:173)
at com.caucho.env.thread2.ResinThread2.run(ResinThread2.java:118)
----


[Occurrence Condition]
It might be occurred when you have set a shared folder in Windows Server as storage.

[Cause]
This is because it is processed as exception in JDK when an error ID of “ERROR_NO_MORE_FILES” is returned from OS. 

This might be due to the following bug of JDK. 
https://bugs.openjdk.java.net/browse/JDK-8234363 (English)

[Workaround]
It is confirmed that this event can be avoided with the following method. 

1. Copy all folders included in the directory below which is expanded under Resin. 

Copy source: under WEB-INF/storage/system

2. Paste the folders which you copied in the previous step to the directory below. 

Copy destination: under {System storage directory}/storage

Example: If the storage path is X://storage/imart and the system storage directory name is system, X://storage/imart/system/storage

*Please check settings of the environment you use as the system storage directory of copy destination is different depending on settings. 
Setting file reference - Storage configuration file
https://www.intra-mart.jp/document/library/iap/public/configuration/im_configuration_reference/texts/im_core/storage-config/index.html#%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0%E3%82%B9%E3%83%88%E3%83%AC%E3%83%BC%E3%82%B8%E3%83%87%E3%82%A3%E3%83%AC%E3%82%AF%E3%83%88%E3%83%AA%E5%90%8D%E8%A8%AD%E5%AE%9A

[Related requirement]
This event is solved in “2020 Summer (8.0.26)”. 

  Requirement [31955] Accel Platform may fail to start when a shared folder on Windows Server is set as storage.
        https://issue.intra-mart.jp/issues/31955

-- Target -------------------------------------------------------------------------
iAP/Accel Platform/All Updates
--------------------------------------------------------------------------------



FAQID:1029
Was this article helpful?
0 out of 0 found this helpful
Powered by Zendesk