I am reading emails from emailServer and saving them in database.I am using following code to read messages from folder("INBOX") on email server and retrieve messages corresponding to them but I am getting

"java.lang.ArrayIndexOutOfBoundsException: message number (621) out of bounds (620)
at com.sun.mail.imap.MessageCache.getMessage(MessageCache.java:123)
at com.sun.mail.imap.MessageCache.getMessageBySeqnum(MessageCache.java:153)
at com.sun.mail.imap.IMAPFolder.getMessageBySeqNumber(IMAPFolder.java:2795)
at com.sun.mail.imap.IMAPFolder.getMessagesByUID(IMAPFolder.java:1924)"

I am using javax.mail.1.4.4 , this issue is coming mainly when inbox is getting flooded .

Code used:

folder = store.getFolder("INBOX");

folder.open(Folder.READ_WRITE);
// messageUID is uid of last message I saved in DB

 Message messages[] = ((UIDFolder) folder).getMessagesByUID(messageUID + 1, UIDFolder.LASTUID);

I have done some research and found that messagecache is set for a folder as soon as it opens, lets assume it is set as 520( size of the folder). Whereas if any message arrives after message cache is set , then in last message sequence num exceeds total size of message cache and it throws an exception.

Can anybody let me know how to get absolute value of UId of the Last message in a folder or how to acquire a folder lock so that after cache is set , folder does not update the size of the folder.

Edit
Report