Spring boot job scheduler works fine on local machine but getting error on AWS ec2 instance

526 Views Asked by At

I am trying to run an application that will list all the file in an FTP server . The programme works fine on local machine but getting error when deploying to AWS.

    26-Apr-2021 16:16:17.519 WARNING [main] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesThreads The web application [DropShippingApplication] appears to have started a thread named [scheduling-1] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:
         [email protected]/java.net.SocketInputStream.socketRead0(Native Method)
         [email protected]/java.net.SocketInputStream.socketRead(SocketInputStream.java:115)
         [email protected]/java.net.SocketInputStream.read(SocketInputStream.java:168)
         [email protected]/java.net.SocketInputStream.read(SocketInputStream.java:140)
         [email protected]/sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:284)
         [email protected]/sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:326)
         [email protected]/sun.nio.cs.StreamDecoder.read(StreamDecoder.java:178)
         [email protected]/java.io.InputStreamReader.read(InputStreamReader.java:185)
         [email protected]/java.io.BufferedReader.fill(BufferedReader.java:161)
         [email protected]/java.io.BufferedReader.read(BufferedReader.java:182)
         org.apache.commons.net.io.CRLFLineReader.readLine(CRLFLineReader.java:58)
         org.apache.commons.net.ftp.FTP.__getReply(FTP.java:321)
         org.apache.commons.net.ftp.FTP.__getReply(FTP.java:300)
         org.apache.commons.net.ftp.FTP.sendCommand(FTP.java:523)
         org.apache.commons.net.ftp.FTPClient._openDataConnection_(FTPClient.java:847)
         org.apache.commons.net.ftp.FTPClient._openDataConnection_(FTPClient.java:785)
         org.apache.commons.net.ftp.FTPClient.initiateListParsing(FTPClient.java:3409)
         org.apache.commons.net.ftp.FTPClient.initiateListParsing(FTPClient.java:3339)
         org.apache.commons.net.ftp.FTPClient.listFiles(FTPClient.java:3016)
         com.motionFashion.DropShippingApplication.JobScheduler.Schedular.copyFileFromFTPtoAWS_v2(Schedular.java:95)
         com.motionFashion.DropShippingApplication.JobScheduler.Schedular.performDailyTask(Schedular.java:61)
         [email protected]/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
         [email protected]/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
         [email protected]/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
         [email protected]/java.lang.reflect.Method.invoke(Method.java:566)
         org.springframework.scheduling.support.ScheduledMethodRunnable.run(ScheduledMethodRunnable.java:84)
         org.springframework.scheduling.support.DelegatingErrorHandlingRunnable.run(DelegatingErrorHandlingRunnable.java:54)
         [email protected]/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
         [email protected]/java.util.concurrent.FutureTask.runAndReset(FutureTask.java:305)
         [email protected]/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:305)
         [email protected]/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
         [email protected]/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
         [email protected]/java.lang.Thread.run(Thread.java:834)
        26-Apr-2021 16:16:17.549 INFO [main] org.apache.coyote.AbstractProtocol.stop Stopping ProtocolHandler ["http-nio-8080"]
        26-Apr-2021 16:16:17.590 INFO [main] org.apache.coyote.AbstractProtocol.destroy Destroying ProtocolHandler ["http-nio-8080"]
        26-Apr-2021 16:16:20.803 INFO [mysql-cj-abandoned-connection-cleanup] org.apache.catalina.loader.WebappClassLoaderBase.checkStateForResourceLoading Illegal access: this web application instance has been stopped already. Could not load []. The following stack trace is thrown for debugging purposes as well as to attempt to terminate the thread which caused the illegal access.
                java.lang.IllegalStateException: Illegal access: this web application instance has been stopped already. Could not load []. The following stack trace is thrown for debugging purposes as well as to attempt to terminate the thread which caused the illegal access.
                        at org.apache.catalina.loader.WebappClassLoaderBase.checkStateForResourceLoading(WebappClassLoaderBase.java:1385)
                        at org.apache.catalina.loader.WebappClassLoaderBase.getResource(WebappClassLoaderBase.java:1038)
                        at com.mysql.cj.jdbc.AbandonedConnectionCleanupThread.checkThreadContextClassLoader(AbandonedConnectionCleanupThread.java:117)
                        at com.mysql.cj.jdbc.AbandonedConnectionCleanupThread.run(AbandonedConnectionCleanupThread.java:84)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
                    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
                    at java.base/java.lang.Thread.run(Thread.java:834)
    2021-04-26 16:16:22
    Full thread dump OpenJDK 64-Bit Server VM (11.0.9+11-LTS mixed mode, sharing):
    
    Threads class SMR info:
    _java_thread_list=0x00007f3444090ab0, length=13, elements={
    0x00007f3474051000, 0x00007f3474053000, 0x00007f3474059000, 0x00007f347405b800,
    0x00007f347405d800, 0x00007f347405f800, 0x00007f34740a3800, 0x00007f34740a7000,
    0x00007f34740ef000, 0x00007f3474114000, 0x00007f3475ab7800, 0x00005618fef93800,
    0x00007f3474016000
    }
    
    "Reference Handler" #2 daemon prio=10 os_prio=0 cpu=2.80ms elapsed=2265.69s tid=0x00007f3474051000 nid=0x4967 waiting on condition  [0x00007f3479e24000]
       java.lang.Thread.State: RUNNABLE
            at java.lang.ref.Reference.waitForReferencePendingList([email protected]/Native Method)
            at java.lang.ref.Reference.processPendingReferences([email protected]/Reference.java:241)
            at java.lang.ref.Reference$ReferenceHandler.run([email protected]/Reference.java:213)
    
    "Finalizer" #3 daemon prio=8 os_prio=0 cpu=0.84ms elapsed=2265.69s tid=0x00007f3474053000 nid=0x4968 in Object.wait()  [0x00007f3479d23000]
       java.lang.Thread.State: WAITING (on object monitor)
            at java.lang.Object.wait([email protected]/Native Method)
            - waiting on <no object reference available>
            at java.lang.ref.ReferenceQueue.remove([email protected]/ReferenceQueue.java:155)
            - waiting to re-lock in wait() <0x00000000d55c78f0> (a java.lang.ref.ReferenceQueue$Lock)
            at java.lang.ref.ReferenceQueue.remove([email protected]/ReferenceQueue.java:176)
            at java.lang.ref.Finalizer$FinalizerThread.run([email protected]/Finalizer.java:170)
    
    "Signal Dispatcher" #4 daemon prio=9 os_prio=0 cpu=0.07ms elapsed=2265.69s tid=0x00007f3474059000 nid=0x4969 waiting on condition  [0x0000000000000000]
       java.lang.Thread.State: RUNNABLE
    "C2 CompilerThread0" #5 daemon prio=9 os_prio=0 cpu=17943.32ms elapsed=2265.69s tid=0x00007f347405b800 nid=0x496a waiting on condition  [0x0000000000000000]
       java.lang.Thread.State: RUNNABLE
       No compile task
    
    "C1 CompilerThread0" #6 daemon prio=9 os_prio=0 cpu=4378.68ms elapsed=2265.69s tid=0x00007f347405d800 nid=0x496b waiting on condition  [0x0000000000000000]
       java.lang.Thread.State: RUNNABLE
       No compile task
    
    "Sweeper thread" #7 daemon prio=9 os_prio=0 cpu=471.47ms elapsed=2265.68s tid=0x00007f347405f800 nid=0x496c runnable  [0x0000000000000000]
       java.lang.Thread.State: RUNNABLE
    
    "Common-Cleaner" #8 daemon prio=8 os_prio=0 cpu=3.35ms elapsed=2265.64s tid=0x00007f34740a3800 nid=0x496d in Object.wait()  [0x00007f347981e000]
       java.lang.Thread.State: TIMED_WAITING (on object monitor)
            at java.lang.Object.wait([email protected]/Native Method)
            - waiting on <no object reference available>
            at java.lang.ref.ReferenceQueue.remove([email protected]/ReferenceQueue.java:155)
            - waiting to re-lock in wait() <0x00000000d55c7f68> (a java.lang.ref.ReferenceQueue$Lock)
            at jdk.internal.ref.CleanerImpl.run([email protected]/CleanerImpl.java:148)
            at java.lang.Thread.run([email protected]/Thread.java:834)
"Service Thread" #9 daemon prio=9 os_prio=0 cpu=0.05ms elapsed=2265.62s tid=0x00007f34740a7000 nid=0x496e runnable  [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

"AsyncFileHandlerWriter-1706234378" #12 daemon prio=5 os_prio=0 cpu=134.94ms elapsed=2265.56s tid=0x00007f34740ef000 nid=0x4970 waiting on condition  [0x00007f34790c0000]
   java.lang.Thread.State: TIMED_WAITING (parking)
        at jdk.internal.misc.Unsafe.park([email protected]/Native Method)
        - parking to wait for  <0x00000000d55c82b8> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
        at java.util.concurrent.locks.LockSupport.parkNanos([email protected]/LockSupport.java:234)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos([email protected]/AbstractQueuedSynchronizer.java:2123)
        at java.util.concurrent.LinkedBlockingDeque.pollFirst([email protected]/LinkedBlockingDeque.java:513)
        at java.util.concurrent.LinkedBlockingDeque.poll([email protected]/LinkedBlockingDeque.java:675)
        at org.apache.juli.AsyncFileHandler$LoggerThread.run(AsyncFileHandler.java:159)

"FileHandlerLogFilesCleaner-1" #13 daemon prio=5 os_prio=0 cpu=20.71ms elapsed=2265.48s tid=0x00007f3474114000 nid=0x4971 waiting on condition  [0x00007f3478fbf000]
   java.lang.Thread.State: WAITING (parking)
        at jdk.internal.misc.Unsafe.park([email protected]/Native Method)
        - parking to wait for  <0x00000000d55c84d0> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
        at java.util.concurrent.locks.LockSupport.park([email protected]/LockSupport.java:194)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await([email protected]/AbstractQueuedSynchronizer.java:2081)
        at java.util.concurrent.LinkedBlockingQueue.take([email protected]/LinkedBlockingQueue.java:433)
        at java.util.concurrent.ThreadPoolExecutor.getTask([email protected]/ThreadPoolExecutor.java:1054)
        at java.util.concurrent.ThreadPoolExecutor.runWorker([email protected]/ThreadPoolExecutor.java:1114)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run([email protected]/ThreadPoolExecutor.java:628)
        at java.lang.Thread.run([email protected]/Thread.java:834)

"scheduling-1" #19 prio=5 os_prio=0 cpu=224.68ms elapsed=2243.34s tid=0x00007f3475ab7800 nid=0x4979 runnable  [0x00007f343bcfc000]
   java.lang.Thread.State: RUNNABLE
        at java.net.SocketInputStream.socketRead0([email protected]/Native Method)
        at java.net.SocketInputStream.socketRead([email protected]/SocketInputStream.java:115)
        at java.net.SocketInputStream.read([email protected]/SocketInputStream.java:168)
        at java.net.SocketInputStream.read([email protected]/SocketInputStream.java:140)
        at sun.nio.cs.StreamDecoder.readBytes([email protected]/StreamDecoder.java:284)
        at sun.nio.cs.StreamDecoder.implRead([email protected]/StreamDecoder.java:326)
        at sun.nio.cs.StreamDecoder.read([email protected]/StreamDecoder.java:178)
        - locked <0x00000000c64f8f40> (a java.io.InputStreamReader)
        at java.io.InputStreamReader.read([email protected]/InputStreamReader.java:185)
        at java.io.BufferedReader.fill([email protected]/BufferedReader.java:161)
        at java.io.BufferedReader.read([email protected]/BufferedReader.java:182)
        - locked <0x00000000c64f8f40> (a java.io.InputStreamReader)
        at org.apache.commons.net.io.CRLFLineReader.readLine(CRLFLineReader.java:58)
        - locked <0x00000000c64f8f40> (a java.io.InputStreamReader)
        at org.apache.commons.net.ftp.FTP.__getReply(FTP.java:321)
        at org.apache.commons.net.ftp.FTP.__getReply(FTP.java:300)
        at org.apache.commons.net.ftp.FTP.sendCommand(FTP.java:523)
        at org.apache.commons.net.ftp.FTPClient._openDataConnection_(FTPClient.java:847)
        at org.apache.commons.net.ftp.FTPClient._openDataConnection_(FTPClient.java:785)
        at org.apache.commons.net.ftp.FTPClient.initiateListParsing(FTPClient.java:3409)
        at org.apache.commons.net.ftp.FTPClient.initiateListParsing(FTPClient.java:3339)
        at org.apache.commons.net.ftp.FTPClient.listFiles(FTPClient.java:3016)
        at com.motionFashion.DropShippingApplication.JobScheduler.Schedular.copyFileFromFTPtoAWS(Schedular.java:108)
        at com.motionFashion.DropShippingApplication.JobScheduler.Schedular.performDailyTask(Schedular.java:61)
        at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0([email protected]/Native Method)
        at jdk.internal.reflect.NativeMethodAccessorImpl.invoke([email protected]/NativeMethodAccessorImpl.java:62)
        at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke([email protected]/DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke([email protected]/Method.java:566)
        at org.springframework.scheduling.support.ScheduledMethodRunnable.run(ScheduledMethodRunnable.java:84)
        at org.springframework.scheduling.support.DelegatingErrorHandlingRunnable.run(DelegatingErrorHandlingRunnable.java:54)
        at java.util.concurrent.Executors$RunnableAdapter.call([email protected]/Executors.java:515)
        at java.util.concurrent.FutureTask.runAndReset([email protected]/FutureTask.java:305)
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run([email protected]/ScheduledThreadPoolExecutor.java:305)
        at java.util.concurrent.ThreadPoolExecutor.runWorker([email protected]/ThreadPoolExecutor.java:1128)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run([email protected]/ThreadPoolExecutor.java:628)
        at java.lang.Thread.run([email protected]/Thread.java:834)
"scheduling-1" #45 prio=5 os_prio=0 cpu=160.16ms elapsed=435.39s tid=0x00005618fef93800 nid=0x4a6f runnable  [0x00007f34322fc000]
   java.lang.Thread.State: RUNNABLE
        at java.net.SocketInputStream.socketRead0([email protected]/Native Method)
        at java.net.SocketInputStream.socketRead([email protected]/SocketInputStream.java:115)
        at java.net.SocketInputStream.read([email protected]/SocketInputStream.java:168)
        at java.net.SocketInputStream.read([email protected]/SocketInputStream.java:140)
        at sun.nio.cs.StreamDecoder.readBytes([email protected]/StreamDecoder.java:284)
        at sun.nio.cs.StreamDecoder.implRead([email protected]/StreamDecoder.java:326)
        at sun.nio.cs.StreamDecoder.read([email protected]/StreamDecoder.java:178)
        - locked <0x00000000c6681ff8> (a java.io.InputStreamReader)
        at java.io.InputStreamReader.read([email protected]/InputStreamReader.java:185)
        at java.io.BufferedReader.fill([email protected]/BufferedReader.java:161)
        at java.io.BufferedReader.read([email protected]/BufferedReader.java:182)
        - locked <0x00000000c6681ff8> (a java.io.InputStreamReader)
        at org.apache.commons.net.io.CRLFLineReader.readLine(CRLFLineReader.java:58)
        - locked <0x00000000c6681ff8> (a java.io.InputStreamReader)
        at org.apache.commons.net.ftp.FTP.__getReply(FTP.java:321)
        at org.apache.commons.net.ftp.FTP.__getReply(FTP.java:300)
        at org.apache.commons.net.ftp.FTP.sendCommand(FTP.java:523)
        at org.apache.commons.net.ftp.FTPClient._openDataConnection_(FTPClient.java:847)
        at org.apache.commons.net.ftp.FTPClient._openDataConnection_(FTPClient.java:785)
        at org.apache.commons.net.ftp.FTPClient.initiateListParsing(FTPClient.java:3409)
        at org.apache.commons.net.ftp.FTPClient.initiateListParsing(FTPClient.java:3339)
        at org.apache.commons.net.ftp.FTPClient.listFiles(FTPClient.java:3016)
        at com.motionFashion.DropShippingApplication.JobScheduler.Schedular.copyFileFromFTPtoAWS_v2(Schedular.java:95)
        at com.motionFashion.DropShippingApplication.JobScheduler.Schedular.performDailyTask(Schedular.java:61)
        at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0([email protected]/Native Method)
        at jdk.internal.reflect.NativeMethodAccessorImpl.invoke([email protected]/NativeMethodAccessorImpl.java:62)
        at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke([email protected]/DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke([email protected]/Method.java:566)
        at org.springframework.scheduling.support.ScheduledMethodRunnable.run(ScheduledMethodRunnable.java:84)
        at org.springframework.scheduling.support.DelegatingErrorHandlingRunnable.run(DelegatingErrorHandlingRunnable.java:54)
        at java.util.concurrent.Executors$RunnableAdapter.call([email protected]/Executors.java:515)
        at java.util.concurrent.FutureTask.runAndReset([email protected]/FutureTask.java:305)
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run([email protected]/ScheduledThreadPoolExecutor.java:305)
        at java.util.concurrent.ThreadPoolExecutor.runWorker([email protected]/ThreadPoolExecutor.java:1128)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run([email protected]/ThreadPoolExecutor.java:628)
        at java.lang.Thread.run([email protected]/Thread.java:834)

Function used for Schedular

public void copyFileFromFTPtoAWS_v2(User user ){
    System.out.println("****************--------copyFileFromFTPtoAWS--------****************");
    System.out.println("user  -:"+user.getUsername());
    int port = 21;
    String ftp_server =user.getFtp_server();
    String ftp_username = user.getFtp_username();
    String ftp_password = user.getFtp_password();

    FTPClient ftpClient = new FTPClient();
    FTPClientConfig conf = new FTPClientConfig();
    conf.setServerTimeZoneId("UTC");
    ftpClient.configure(conf);

    try {
        ftpClient.connect(ftp_server, port);
        ftpClient.login(ftp_username, ftp_password);

        System.out.println("listFiles--->message");
        FTPFile[] message = ftpClient.listFiles("/message");
        System.out.println("list-message"+message.length);
        System.out.println("listFiles--->order");
        FTPFile[] order = ftpClient.listFiles("/order");
        System.out.println("list-order"+order.length);

        String path = ftpClient.printWorkingDirectory();
        System.out.println("path :"+path);

    }
    catch (Exception e)
    {
        System.out.println(e);
    }
}

In the schedular i checked for active user then send the user to the above function to get their file two folder "message" and "order" inside FTP server. But in FTPFile[] message = ftpClient.listFiles("/message"); line I am getting the error .

performDailyTask function on JobSchedular

 @Autowired
Ftp_File_service ftpFile_service;
@Autowired
storageService storageService;
@Autowired
UserService userService;
@Autowired
OrderService OrderService;
@Autowired
EmailService emailService;

DateFormat dateFormater2 = new SimpleDateFormat("dd_MM_yyyy_HH_mm");
DateFormat dateFormater = new SimpleDateFormat("dd-MM-yyyy_HH:mm");

FTPClient ftp = null;

private static final int BUFFER_SIZE = 4096;


//300000    -> 5 min
//600000    -> 10 min
@SuppressWarnings({ "resource", "unused" })
@Scheduled(fixedRate = 600000)//..................................................................UPDATE bestand_komplett
public void performDailyTask(){

System.out.println("**************************performDailyTask**************************");

    List<User> userList = userService.findAllClient();

    if(!userList.isEmpty())
    {
        List<User> newUserList=userService.findAllActiveClient(userList);
        if(!newUserList.isEmpty()){

            for(User user : newUserList)
            {
                copyFileFromFTPtoAWS_v2(user);
            }
        }
    }
}

new Error

    **************************performDailyTask**************************
time
26/04/2021 20:48:41
****************--------copyFileFromFTPtoAWS--------****************
user  -:mds001
listFiles--->message
list-message0
listFiles--->order
26-Apr-2021 20:51:58.272 INFO [http-nio-8080-exec-2] org.apache.coyote.http11.Http11Processor.service Error parsing HTTP request header
 Note: further occurrences of HTTP request parsing errors will be logged at DEBUG level.
        java.lang.IllegalArgumentException: Invalid character found in the HTTP protocol [HTTP/1.10x0aHost:]
                at org.apache.coyote.http11.Http11InputBuffer.parseRequestLine(Http11InputBuffer.java:559)
                at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:261)
                at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
                at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:888)
                at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1597)
                at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
                at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
                at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
                at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
                at java.base/java.lang.Thread.run(Thread.java:834)
1

There are 1 best solutions below

0
On
    ftpClient.enterLocalPassiveMode();
    ftpClient.type(FTP.BINARY_FILE_TYPE);

This two line after FTP connect solved my problem .Since I am getting no Error except some warning on log file.