Skip to main content

Hello,

I have IFS Cloud Installation Using 22R1 using remote deployment on Azure Storage.

If there any way to use Azure Storage for DocMan. I have tired using Shared Path but seems its working.

in This i have created Repositotary Address using \\<ServerName>\<path mapped on the server 

given user name password for the server. 

Added Same Address in Repositotary and used port 22 (SCP) as the azure storage path is mapped to linux server. 

But While check in the document its failing to connet to the Respositotary.

Please suggest. Storing documents on Database is not a very good option.

Regards

Pankaj

In theory, this should be possible if you can ensure that there is network connectivity between the k8s cluster and the shared folder. It's important to make sure k8s (linkerd) is also configured to accept SMB traffic. The port number you specified will NOT be taken into account, it's only used for FTP communication.


Hello @Mathias Dahl ,

I managed to configure FTP on azure storage using IIS on WMS server. will share detailed document how i did not.

Now while checking document. I dont get any error but the document does not store on location.

on checking logs i am getting error 

“"type":"liberty_message","host":"ifsapp-odata-685f5c7f46-l2h7t","ibm_userDir":"\/opt\/ifs\/wlp\/usr\/","ibm_serverName":"defaultServer","message":"2023-03-28 10:38:43.868 ERROR RWEBAPP] 2673 9158e4e3-6805-40bb-ae8b-4c621af3b4a1 com.ifsworld.fnd.web.api.FndODataServletBase.service() : Server Error occurred in OData Servlet.\njava.lang.NullPointerException\n\tat org.apache.commons.io.input.AutoCloseInputStream.close(AutoCloseInputStream.java:64)\n\tat com.ifsworld.docman.projection.util.AutoCloseFtpInputStream.close(AutoCloseFtpInputStream.java:20)\n\tat java.base\/java.nio.channels.Channels$ReadableByteChannelImpl.implCloseChannel(Unknown Source)\n\tat java.base\/java.nio.channels.spi.AbstractInterruptibleChannel.close(Unknown Source)\n\tat com.ifsworld.fnd.provider.util.ODataHttpHandlerUtil.closeStream(ODataHttpHandlerUtil.java:277)\n\tat com.ifsworld.fnd.provider.util.ODataHttpHandlerUtil.copyContent(ODataHttpHandlerUtil.java:263)\n\tat com.ifsworld.fnd.provider.util.ODataHttpHandlerUtil.copyContent(ODataHttpHandlerUtil.java:237)\n\tat com.ifsworld.fnd.provider.util.ODataHttpHandlerUtil.convertToHttp(ODataHttpHandlerUtil.java:221)\n\tat com.ifsworld.fnd.web.api.FndODataServletBase.serviceProjectionRequest(FndODataServletBase.java:173)\n\tat com.ifsworld.fnd.web.api.FndODataServletBase.service(FndODataServletBase.java:112)\n\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:791)\n\tat com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1258)\n\tat com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:746)\n\tat com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:443)\n\tat com.ibm.ws.webcontainer.filter.WebAppFilterChain.invokeTarget(WebAppFilterChain.java:193)\n\tat com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:98)\n\tat com.ifsworld.fnd.web.api.ResponseFilterBase.doFilter(ResponseFilterBase.java:60)\n\tat com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:201)\n\tat com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:91)\n\tat com.ifsworld.fnd.web.api.InitConfigurationFilterBase.doFilter(InitConfigurationFilterBase.java:197)\n\tat com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:201)\n\tat com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:91)\n\tat com.ibm.ws.security.jaspi.JaspiServletFilter.doFilter(JaspiServletFilter.java:56)\n\tat com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:201)\n\tat com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:91)\n\tat com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:1002)\n\tat com.ibm.ws.webcontainer.filter.WebAppFilterManager.invokeFilters(WebAppFilterManager.java:1140)\n\tat com.ibm.ws.webcontainer.webapp.WebApp.handleRequest(WebApp.java:5049)\n\tat com.ibm.ws.webcontainer.osgi.DynamicVirtualHost$2.handleRequest(DynamicVirtualHost.java:316)\n\tat com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:1007)\n\tat com.ibm.ws.webcontainer.osgi.DynamicVirtualHost$2.run(DynamicVirtualHost.java:281)\n\tat com.ibm.ws.http.dispatcher.internal.channel.HttpDispatcherLink$TaskWrapper.run(HttpDispatcherLink.java:1184)\n\tat com.ibm.ws.http.dispatcher.internal.channel.HttpDispatcherLink.wrapHandlerAndExecute(HttpDispatcherLink.java:453)\n\tat com.ibm.ws.http.dispatcher.internal.channel.HttpDispatcherLink.ready(HttpDispatcherLink.java:412)\n\tat com.ibm.ws.http.channel.internal.inbound.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:566)\n\tat com.ibm.ws.http.channel.internal.inbound.HttpInboundLink.handleNewRequest(HttpInboundLink.java:500)\n\tat com.ibm.ws.http.channel.internal.inbound.HttpInboundLink.processRequest(HttpInboundLink.java:360)\n\tat com.ibm.ws.http.channel.internal.inbound.HttpICLReadCallback.complete(HttpICLReadCallback.java:70)\n\tat com.ibm.ws.tcpchannel.internal.WorkQueueManager.requestComplete(WorkQueueManager.java:504)\n\tat com.ibm.ws.tcpchannel.internal.WorkQueueManager.attemptIO(WorkQueueManager.java:574)\n\tat com.ibm.ws.tcpchannel.internal.WorkQueueManager.workerRun(WorkQueueManager.java:958)\n\tat com.ibm.ws.tcpchannel.internal.WorkQueueManager$Worker.run(WorkQueueManager.java:1047)\n\tat com.ibm.ws.threading.internal.ExecutorServiceImpl$RunnableWrapper.run(ExecutorServiceImpl.java:238)\n\tat java.base\/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)\n\tat java.base\/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)\n\tat java.base\/java.lang.Thread.run(Unknown Source)","ibm_threadId":"00000a71","ibm_datetime":"2023-03-28T10:38:43.868+0000","module":"SystemErr","loglevel":"SystemErr","ibm_methodName":"","ibm_className":"","ibm_sequence":"1679999923868_000000000085D","ext_requestID":"AANlzBr4OOf_AAAAAAAAL\/t","ext_thread":"Default Executor-thread-2588"}
{"type":"liberty_message","host":"ifsapp-odata-685f5c7f46-l2h7t","ibm_userDir":"\/opt\/ifs\/wlp\/usr\/","ibm_serverName":"defaultServer","message":"2023-03-28 10:40:49.645 WARN AMETADATA] 2673 1e716a97-0a6b-42be-ba99-97f784a60ebb com.ifsworld.fnd.storage.mapper.AbstractEntityDataMapper.mapAttrEtagToEntity() : ETag is missing in created entity EdmLocation.","ibm_threadId":"00000a71","ibm_datetime":"2023-03-28T10:40:49.645+0000","module":"SystemOut","loglevel":"SystemOut","ibm_methodName":"","ibm_className":"","ibm_sequence":"1680000049645_000000000085E","ext_requestID":"AANlzBr4OOf_AAAAAAAAMAB","ext_thread":"Default Executor-thread-2588"}
{"type":"liberty_message","host":"ifsapp-odata-685f5c7f46-l2h7t","ibm_userDir":"\/opt\/ifs\/wlp\/usr\/","ibm_serverName":"defaultServer","message":"2023-03-28 10:41:22.310 WARN AMETADATA] 2638 7a6fc4d8-7992-4b68-a105-dea1fc5e7c84 com.ifsworld.fnd.storage.mapper.AbstractEntityDataMapper.mapAttrEtagToEntity() : Attribute OBJKEY not found in metadata.","ibm_threadId":"00000a4e","ibm_datetime":"2023-03-28T10:41:22.310+0000","module":"SystemOut","loglevel":"SystemOut","ibm_methodName":"","ibm_className":"","ibm_sequence":"1680000082310_000000000085F","ext_requestID":"AANlzBr4OOf_AAAAAAAAMAI","ext_thread":"Default Executor-thread-2553"}”

Can you suggest please

Regards

Pankaj


Do you know that the Kubernetes cluster can reach the FTP server? If yes, how do you know that? How does the basic data of your Docman repository look like?

 


Hello,

  1. I could login to FTP server from MT server 
  2. Log shows that it could connect to FTP Server . Check logs below
  3. {"type":"liberty_message","host":"ifsapp-odata-685f5c7f46-v4d8v","ibm_userDir":"\/opt\/ifs\/wlp\/usr\/","ibm_serverName":"defaultServer","message":"### Connected to FTP server 10.0.1.6.","ibm_threadId":"00000905","ibm_datetime":"2023-03-28T12:44:03.976+0000","module":"SystemOut","loglevel":"SystemOut","ibm_methodName":"","ibm_className":"","ibm_sequence":"1680007443976_00000000007A9","ext_requestID":"AANl0SwdRtw_AAAAAAAAMlH","ext_thread":"Default Executor-thread-2224"}
    {"type":"liberty_message","host":"ifsapp-odata-685f5c7f46-v4d8v","ibm_userDir":"\/opt\/ifs\/wlp\/usr\/","ibm_serverName":"defaultServer","message":"220 Microsoft FTP Service\r","ibm_threadId":"00000905","ibm_datetime":"2023-03-28T12:44:03.976+0000","module":"SystemOut","loglevel":"SystemOut","ibm_methodName":"","ibm_className":"","ibm_sequence":"1680007443976_00000000007AA","ext_requestID":"AANl0SwdRtw_AAAAAAAAMlH","ext_thread":"Default Executor-thread-2224"}
    {"type":"liberty_message","host":"ifsapp-odata-685f5c7f46-v4d8v","ibm_userDir":"\/opt\/ifs\/wlp\/usr\/","ibm_serverName":"defaultServer","message":"### FTP server reply code: 220","ibm_threadId":"00000905","ibm_datetime":"2023-03-28T12:44:03.976+0000","module":"SystemOut","loglevel":"SystemOut","ibm_methodName":"","ibm_className":"","ibm_sequence":"1680007443976_00000000007AB","ext_requestID":"AANl0SwdRtw_AAAAAAAAMlH","ext_thread":"Default Executor-thread-2224"}
    {"type":"liberty_message","host":"ifsapp-odata-685f5c7f46-v4d8v","ibm_userDir":"\/opt\/ifs\/wlp\/usr\/","ibm_serverName":"defaultServer","message":"Checking map parameters DocClass CUSTDOCS","ibm_threadId":"0000092f","ibm_datetime":"2023-03-28T12:44:04.197+0000","module":"SystemOut","loglevel":"SystemOut","ibm_methodName":"","ibm_className":"","ibm_sequence":"1680007444197_00000000007AC","ext_requestID":"AANl0SwdRtw_AAAAAAAAMlJ","ext_thread":"Default Executor-thread-2264"}
    {"type":"liberty_message","host":"ifsapp-odata-685f5c7f46-v4d8v","ibm_userDir":"\/opt\/ifs\/wlp\/usr\/","ibm_serverName":"defaultServer","message":"Checking map parameters DocNo TESTAGAIN02","ibm_threadId":"0000092f","ibm_datetime":"2023-03-28T12:44:04.198+0000","module":"SystemOut","loglevel":"SystemOut","ibm_methodName":"","ibm_className":"","ibm_sequence":"1680007444198_00000000007AD","ext_requestID":"AANl0SwdRtw_AAAAAAAAMlJ","ext_thread":"Default Executor-thread-2264"}
    {"type":"liberty_message","host":"ifsapp-odata-685f5c7f46-v4d8v","ibm_userDir":"\/opt\/ifs\/wlp\/usr\/","ibm_serverName":"defaultServer","message":"Checking map parameters DocSheet 1","ibm_threadId":"0000092f","ibm_datetime":"2023-03-28T12:44:04.198+0000","module":"SystemOut","loglevel":"SystemOut","ibm_methodName":"","ibm_className":"","ibm_sequence":"1680007444198_00000000007AE","ext_requestID":"AANl0SwdRtw_AAAAAAAAMlJ","ext_thread":"Default Executor-thread-2264"}
    {"type":"liberty_message","host":"ifsapp-odata-685f5c7f46-v4d8v","ibm_userDir":"\/opt\/ifs\/wlp\/usr\/","ibm_serverName":"defaultServer","message":"Checking map parameters DocRev A1","ibm_threadId":"0000092f","ibm_datetime":"2023-03-28T12:44:04.198+0000","module":"SystemOut","loglevel":"SystemOut","ibm_methodName":"","ibm_className":"","ibm_sequence":"1680007444198_00000000007AF","ext_requestID":"AANl0SwdRtw_AAAAAAAAMlJ","ext_thread":"Default Executor-thread-2264"}
    {"type":"liberty_message","host":"ifsapp-odata-685f5c7f46-v4d8v","ibm_userDir":"\/opt\/ifs\/wlp\/usr\/","ibm_serverName":"defaultServer","message":"Checking map parameters DocType ORIGINAL","ibm_threadId":"0000092f","ibm_datetime":"2023-03-28T12:44:04.198+0000","module":"SystemOut","loglevel":"SystemOut","ibm_methodName":"","ibm_className":"","ibm_sequence":"1680007444198_00000000007B0","ext_requestID":"AANl0SwdRtw_AAAAAAAAMlJ","ext_thread":"Default Executor-thread-2264"}
    {"type":"liberty_message","host":"ifsapp-odata-685f5c7f46-v4d8v","ibm_userDir":"\/opt\/ifs\/wlp\/usr\/","ibm_serverName":"defaultServer","message":"Checking map parameters RefCursor_$ null","ibm_threadId":"0000092f","ibm_datetime":"2023-03-28T12:44:04.198+0000","module":"SystemOut","loglevel":"SystemOut","ibm_methodName":"","ibm_className":"","ibm_sequence":"1680007444198_00000000007B1","ext_requestID":"AANl0SwdRtw_AAAAAAAAMlJ","ext_thread":"Default Executor-thread-2264"}
    {"type":"liberty_message","host":"ifsapp-odata-685f5c7f46-v4d8v","ibm_userDir":"\/opt\/ifs\/wlp\/usr\/","ibm_serverName":"defaultServer","message":"Checking map parameters IfsUser ifsapp","ibm_threadId":"0000092f","ibm_datetime":"2023-03-28T12:44:04.198+0000","module":"SystemOut","loglevel":"SystemOut","ibm_methodName":"","ibm_className":"","ibm_sequence":"1680007444198_00000000007B2","ext_requestID":"AANl0SwdRtw_AAAAAAAAMlJ","ext_thread":"Default Executor-thread-2264"}
    {"type":"liberty_message","host":"ifsapp-odata-685f5c7f46-v4d8v","ibm_userDir":"\/opt\/ifs\/wlp\/usr\/","ibm_serverName":"defaultServer","message":"2023-03-28 12:44:05.164 WARN METADATA] 2299 aa6f7518-59a8-4d64-81ef-eeb13f6931f9 com.ifsworld.fnd.storage.StorageProviderUtils.decodeEtag() : Invalid ETag value detected.","ibm_threadId":"000008fb","ibm_datetime":"2023-03-28T12:44:05.164+0000","module":"SystemOut","loglevel":"SystemOut","ibm_methodName":"","ibm_className":"","ibm_sequence":"1680007445164_00000000007B3","ext_requestID":"AANl0SwdRtw_AAAAAAAAMlL","ext_thread":"Default Executor-thread-2214"}

Thanks!

This is a bit strange. It looks like there is an error when our code tries to close the FTP input stream:

  com.ifsworld.docman.projection.util.AutoCloseFtpInputStream.close(AutoCloseFtpInputStream.java:20)

That calls

 org.apache.commons.io.input.AutoCloseInputStream.close(AutoCloseInputStream.java:64)

62   @Override

63    public void close() throws IOException {

64        in.close();

65        in = ClosedInputStream.CLOSED_INPUT_STREAM;

66    }

    
Which throws a null pointer exception. This suggests the stream is null ("in" above). Why would it be null if there is a successful FTP connection? Perhaps something closed it before? Either our own code has closed the connection or some other code did it...

We could try to add a check in our Java code, to see if the stream is not null before we close it. Then again, we might not be able to recreate this internally since, for us, FTP is working. So we would do that fix "blindly" (fixing something without being able to recreate the problem), which is never good.

I'll discuss this internally and see if we can come up with some theory.
 


Thanks @Mathias Dahl ,

Look forward. seems I am there but not there :(

 

Regards

Pankaj


Hi @Mathias Dahl 

I saw the same error in another customer (22R2 remote deployed) when they try to view a document which is saved in FTP. You cannot see any errors in the client during upload but you get a server error when you try to view the file. Below error is in the ODATA logs which is the same error as above.

 

I didn't receive feedback regarding FTP logs and the connectivity between k8s cluster and FTP server but since above log shows FTP code 220 (220 code is sent in response to a new user connecting to the FTP server to indicate that the server is ready for the new client) I am not sure it is due to a connectivity problem.


Check the FTP server logs to see how the communication looks like. In the server I use I can see every command, the whole interaction actually. 

Stupid question: does the file exist? 🙃

 


Hi ​@Amila Samarasinghe

 

We are also running into this issue with a customer. Did you ever find out a solution to the issue? We have verified that the file is not actually uploaded, even though IFS Aurena doesn’t show any errors while uploading the file. We can find the same NullPointerException in the pod logs.

 

 


@Mikko1234 

If you uploaded the file from Attachments / Documents, try instead from the Document Revision screen. There you will sometimes get an error message with details that can give you a clue.

Setting up both FTP and Shared repositories in IFS Cloud can be tricky because especially the networking from the k8s cluster the the FTP and/or network shares need to have been setup properly and it's not something you can do from inside IFS Cloud.

For Remote below IFS Cloud 23R1 I would recommend Database storage, as long as the customer can handle long backup/restore times (for large data volumes, for small ones it's not an issue).


Reply