Re: URGENT HELP: James 2.3.2 not responding after few days of run

2015-03-28 Thread Mahesh Sivarama Pillai
Thanks again Bernd... I couldn't find the hserr files under the temp or
james directories. Considering we faced Too Many open files issue, will it
prevent the JVM from not creating this file ? I am clueless on this issue.
No process Killed James, Noone stopped James.. No OOM in logs.. No core
dump :) :(

Regarding the file system I will verify. As far as I know we have a NAS...

On Sat, Mar 28, 2015 at 3:50 AM, Bernd Waibel bwai...@intarsys.de wrote:

 Hi Mahesh,

 Don't missunderstand: Out-of-file-handle COULD lead to a memory leak,
 consuming memory time by time. But not NEED to.

 OOMs will normally been shown in the log, as I know, but we got this only
 for the heap memory.
 OOMs normally happen if the heap memory will reach the limit, and yes, we
 got this in the logs, sometimes.
 Every time I got an OOM in log, I restarted the server. Just to be sure it
 keeps running.
 So I do not have long running servers with a lot of OOM errors. So: no
 experience with that.

 But you could also get short on memory for the java classes (Native area,
 Method area), and I am not sure if this will show up in the log. Never had
 this with james. I got his when running JIRA long ago, but could not
 remember the log.

 The PID (process ID) is something handled by the linux system, it is
 outside James, and I think you won't find it in log.
 But the PID is created on startup (phonix.sh), and may be logged in the
 shell script to somewhere, together with a time stamp.
 But not in the james logs.

 If your sysadmins do use a monitoring tool (like nagios or icinga) the may
 monitor the memory.
 You could also monitor the memory inside the VM using JMX, but this is a
 little bit hard to set up.

 But anyway: the memory may NOT be the problem. So do not spend to much
 time on that.

 If you could find a hserr*.pid file, the file will tell the reason for
 crashing.


 There is something else I could remember. But with another software.
 If the log file is stored on a file server (not a local directory), and
 the file server will reboot, you will loose the log.
 We got a java process which died, cause the file server has been
 rebooted at midnight, and the java process lost all mounted directories.
 After that we made sure that the log directory is always local. And the
 programm directory too.
 You may check if your server uses mounted file systems.


 Greetings
 Bernd

 -Ursprüngliche Nachricht-
 Von: Mahesh Sivarama Pillai [mailto:srm...@gmail.com]
 Gesendet: Freitag, 27. März 2015 15:17
 An: James Users List
 Betreff: Re: URGENT HELP: James 2.3.2 not responding after few days of run

 Hi Bernd,

  Thanks for the pointers. Let me ask the Sys admin on these details. Btw,
 will this memory leak be shown in the logs? I couldn't find any OOM errors
 in any of the logs. When the issue, happened, our team restarted the
 server. It will create a new PID rite ? Is there a way we can see the old
 pids from the james logs ?

 Thanks
 Mahesh

 On Fri, Mar 27, 2015 at 7:33 PM, Bernd Waibel bwai...@intarsys.de wrote:

  Hi Mahesh
 
  to man open files may result in a memory leak.
  Could the sysadmin monitor the memory?
 
  It is a java prozess. Is there a file called hserr*.pid? That is
  produced if the vm crashes.
 
  Ciao
  Bernd
 
 
   Ursprüngliche Nachricht 
  Von: Mahesh Sivarama Pillai srm...@gmail.com
  Datum: 27.03.2015 14:18 (GMT+01:00)
  An: James Users List server-user@james.apache.org
  Betreff: URGENT HELP: James 2.3.2 not responding after few days of run
 
  Hi,
 
   I need an urgent help. We have rolled out James 2.3.2 to production
  for our email processing application. I see that James getting
  shutdown (no trace in the phoenix.console) after few days of run. It
  processes around 100K email a day and sends a good amount of
  Notification through RemoveDelivery.
 
  I have verified the logs but I couldn't find any reason for this
  abnormal shutdown. I have seen couple of Too Many Open Files errors
  in smtpserver log and spoolmanager log. But I think those will not bring
 down the server.
  Will they ? I am not sure if James is killed by some other Linux process.
  James is running under a user (eg: james) account with sudo access to
  run on port 25. Since I don't have root access, what all areas that I
  look to figure out what the problem is ? If I want to talk to Sys
  Admin, what all information that I should ask him/her to gather ?
 
  James is running on a 4 CPU machine with 8GB RAM. Heapsize of James is
  set to 4GB.
 
  I have configured to run James as service in Linux. I am not sure if
  our Sys Admin run the chkconfig command. Is there any impact of not
  running this command ? Please provide your inputs as early as possible..
 
 
  Thanks
  Mahesh
 

 -
 To unsubscribe, e-mail: server-user-unsubscr...@james.apache.org
 For additional commands, e-mail: server-user-h...@james.apache.org



Re: AW: Tracking Mail After Folder Moves [unsigned]

2015-03-28 Thread Jerry Malcolm

Hi Bernd,

Thanks for the response.  Here's the problem scenario A company has 
lots of dealing with their client, Joe.  Several different employees 
have to email Joe regularly.  So correspondence to Joe is spread across 
several mail accounts and several folders in each account (sent, inbox, 
archive 2013, archive 2014, etc, and some employees might have a Joe's 
stuff folder).  There are no restrictions as to what folder a 
particular email might be in (and possibly be moved to a different 
folder tomorrow).  The 'boss' wants to be able to see a list of 'all 
email to Joe'.


As mail arrives I extract relevant search criteria and store it in my 
search engine database.  So it is easy for me to assemble the list of 
emails to Joe.  The one thing I need. I need to be able then to 
query JAMES_MAIL and extract the actual mail records.  A simple, 
guaranteed, unchangeable UUID in JAMES_MAIL is ALL I need. I simply 
store the UUID as the key in my search engine.  (Once I find the record, 
I can determine the account/folder from the record and then use standard 
IMAP functions to access the mail item).


My main design points...

1) The UUID must be immutable,  folder independent, and folder-move 
independent.
2) I do not want to duplicate a near million mail entry db somewhere 
else.  I want to pull the mail from the existing JAMES_MAIL db.
3) New mail and deleted mail will be handled by search engine sync 
utilities and is not an issue


In summary my search engine finds the index/key record it wants 
It must then locate that  particular mail item in the JAMES_MAIL table


I'm currently generating a hash UUID including various fields such as 
from, to, subject, etc. that is working fairly well at generating a 
unique id/key.  It still feels like a hack.  And I'm sure there will be 
situations where the calculated hash is a dup from a different email.  
So it's not 100%.


As you originally theorized, the simplest solution would have been to 
have the db autogen an incrementing id.  But as you pointed out, the 
copy/delete on folder move kills that id.  Perhaps add a UUID header to 
the mail when it first comes in if such header does not exist.  Then 
always reflect that UUID header value to the JAMES_MAIL table's UUID 
field for db query use (??).  Headers remain intact in case of 
Thunderbird's  copy/delete, correct?


Thoughts?

Jerry

On 3/13/2015 6:15 PM, Bernd Waibel wrote:

Sorry,

Thought about again:
I think using a sequence is wrong. Cause Thunderbird makes a COPY, you will get a new 
UUID for the B:42 mail, and as I understand that is not what you need.

Greetings
Bernd

-Ursprüngliche Nachricht-
Von: Bernd Waibel [mailto:bwai...@intarsys.de]
Gesendet: Samstag, 14. März 2015 00:07
An: James Users List
Betreff: AW: Tracking Mail After Folder Moves [unsigned]

Hello Jerry,

just a few thoughts about alternatives (not sure I got your problem).

Why don't use a database sequence field or AUTO_INCREMENT field, instead of a 
UUID? And let the database handle the UUID creation?
But if you would like to use UUIDs: Make sure it is not part of a race 
condition.
As shortly described here for postgres sequences: 
http://www.neilconway.org/docs/sequences/
James is multithreaded.

Maybe the UUID field should be indexed, if you search for it often (a sequence 
field does not need to be indexed).

Maybe a database trigger on insert could create your index table. And another trigger 
could delete on delete.

You said, you will have a hourly delay of indexing when using cron. What 
happens, if a new mail arrives, and the user moves this mail immediately to 
another folder, before indexed, is this ok for your process?
It is just the way I handle my mails: on arrival I move the mails to a new 
folder (after reading).


But a good indexing solution implemented in James would be nice, too. ;-)


Greetings
Bernd

-Ursprüngliche Nachricht-
Von: Jerry Malcolm [mailto:techst...@malcolms.com]
Gesendet: Freitag, 13. März 2015 22:08
An: server-user@james.apache.org
Betreff: Re: Tracking Mail After Folder Moves

Benoit,

Thanks for the info.  Kinda what I was suspecting.  Here's what I've done so 
far...

My ultimate objective is to maintain a searchable index for all of the hundreds 
of thousands of emails stored in my JAMES mail db.  As previously discussed, 
this is only possible assuming I have a way to later locate a particular email 
that I have built an index for (assuming the user will move it around between 
folders...)

1) Step one was to add one more column to the JAMES_MAIL table for my own 
globally-unique UUID
2) When JAMES stores an email, this column defaults to -1, so I'll know it 
hasn't yet been indexed
3) A chron job runs hourly and creates an index for the new mail. It also adds 
the matching index records with all of the keyword info I want to track into my 
own separate index table.
4) I have code to process index queries and identify the UUID for the desired 
mail
5) I