7020976: How to Read Retain Logs


The Retain Server and the Retain Worker logs serve the purpose of not only displaying information on what is being done in archiving the messages from your GroupWise system, but it also provides information for troubleshooting purposes.

The log files can be quite intimidating as they are chock full of information ranging from basic archive information of the system, SOAP and GroupWise connections, as well as java stack traces and elements of tomcat and apache.

Understanding a few basic elements of the log files can help to read these log files and make it a less daunting task. It should be noted that, with every release, the logging messages change as developers try to provide more helpful diagnostic messages or add code that needs logging. Thus, this article is a best effort guide. We cannot guarantee that it will always be up to date with the latest changes.

Note: The log files discussed below are in diagnostic logging to provide as much information as possible. If you do not see the same type of information in the logs mentioned please set your logging level to diagnostic.

Log Location

See KB article, “Location of Log Files“.

Basic Retain Logs

The Retain logs are a collaboration of elements of all that is running on and with the system. It contains information for the Retain program, java, SQL servers (MYSQL, Microsoft SQL 200/2005, Oracle, etc…), as well as tomcat and apache. They show you connection information to the Retain Worker, MYSQL server as well as the schedule information both for the Quartz scheduling as well as the profiles for Reload integration. If there are any error messages in the logs it can show in several different ways. One way is the java stack trace which is quite distinct from the rest of the log. The other is not so distinct and may say ERROR or WARN in the line. This usually indicates a problem with Retain itself while the first will be a GroupWise or other 3rd party issue. More on errors will be discussed below.

Viewing The Logs

Viewing the logs can be quite difficult depending on the program that you are viewing them in. In Linux you can easily tail the logs but it may not show you all of the information that you need to know. Using Notepad or generic text programs can make the logs look garbled and extremely difficult to read. Below are some text programs that are recommended for ease of usability and to easily view the log files:

Notepad:This program is found on all Windows workstations by default. It is great for small log files, and you can change the setup to word wrap if necessary. This is not recommended as it is not as sophisticated for viewing Retain logs as the other programs below. The information in the logs runs together and can be quite difficult to read.

WordPad: This program, found on almost all Windows Workstations and servers, works great for smaller log files. It has a word wrap feature that can help in viewing the information quickly and is quite easy to read.

TextPad: This text editor is offered with a trial download (full featured) that is installed on your Windows machine. It is better for larger log files (up to 1 GB) and has automatic features to display line by line each of the log files information. Once the trial period is complete, they prompt for a purchase but – to date – do not enforce it. The program continues to operate full featured.

Notepad ++: Very similar to Textpad which is very helpful for larger log files. This program, like Textpad, must be downloaded and installed before use. It has search features that rival Wordpad and Textpad. The issue you’ll run into with Notepad ++ is that it is limited to opening files only up to 1GB; however, it distributes that amount over all open files. So if you have one document open, it can be up to 1GB. If you have two files open, it can be split between 500MB and 500MB or something like 800MB and 200MB and so forth. One of its nice features is that search results show in a separate pane; and, by double-clicking on any search hit in the search results pane will take the cursor right to the point in the main pane (where the log is loaded) to the exact point of that search hit.

Glogg: Some of our tech support engineers use this log reader because it seems to be able to handle larger files than the other tools; however, it does not appear to be as feature rich. There are log splitting utilities that will break up large log files into smaller more manageable parts.

Gedit.This is Linux only. Can be great for small log files. If the file is too large it may take quite some time to pull up in this text editor. It may be easier to move the log file to a Windows machine and use a Windows-based text editor instead for viewing.

There are many other text editors out there. You may want to do your research – the intent of mentioning a few of them is to give you ideas.

Retain Worker Log

The Retain Worker is found in the same directory as the Retain Server if they are both installed on the same server. However, the Retain Worker can also be on a remote server, which then may change the location of the log file.

The Retain Worker log is a good place to look to see that the Retain Server has contacted the Worker and started the job.

Searching for Errors

If you just want to search for errors that occurred one by one, then simplysearch for “[ERROR]” (literally including the square brackets; however, this requires that you set up your logging to log it in this format). See our KB, “Logging Configuration Change to Facilitate Easier Archive Job Error Identification“. Searching on “[ERROR]” will take you right to the point when the error occurred. You can then look around that area (before and after) to get all of the details. If you look above the error several lines, you should be able to determine which message or attachment or folder is was working on when the error occurred.

Finding Key Information About the Mailbox Job

The logs in Retain 4 have changed significantly, so where there are differences, they’ll be noted since not everyone will be upgrading from Retain 3 to Retain 4 right away. Developers are constantly changing logging and Support provides feedback on what we would like to see, so we will try to keep this article updated as things change. It should be assumed that these tips reflect how logging works in the most current version of Retain.

Here are some key words to search on to find key information:

Job Start

Retain 3: Beginning the dredging saga of[job name]

Retain 4: Starting scheduled Archive job[job ID]

That is the beginning of the job. Delete everything above the job start line and save the log. This eliminates needless log chatter prior to the job start; however, if the job started in the evening of day1 but did not end until sometime during day2, then the job will be split among two separate logs. Retain rolls the logs at midnight. The existing log is compressed into a zip file (default log setting) and a new log is created.

Job Completion

Retain 3: job ended gracefully

Retain 4: JobRun ended successfully

Delete everything after the this job completion line and save the log. This marks the end of the archive job. Deleting everything after that phrase, again, eliminates needless log chatter.

Entering a Mailbox

Retain 3: Logging in as: [mailbox]

Retain 4: Logging in as : [mailbox] (note the additional space between “as” and the colon character)

This is where Retain enters the user mailbox to begin archiving its contents. If you are researching just a single mailbox issue, search for that user’s mailbox: logging in as: [mailbox]. Delete everything before that line; then, search for “logging in as” without specifying a mailbox name. This gets you to the next mailbox after the one you are researching. Delete everything after that point. This just leaves you with a log of only that one user’s mailbox. If you do this, just save your log with a different name so as to avoid overwriting the original log.

Finishing a Mailbox

Date Chosen:

This is the date used for the item store flag (Exchange) or retention flag (GroupWise).

Errors

[ERROR] (Literally including the square brackets; however, this requires that you set up your logging to log it in this format).

See our KB, “Logging Configuration Change to Facilitate Easier Archive Job Error Identification“. Searching on “[ERROR]” will take you right to the point when the error occurred.

preventAdvanceFlag

This will show the line where you’ll see “preventAdvanceFlag: n” (among other things). If the number is “1”, then the error prevented the Retention or Item Store Flag from being advanced. This would be a concern. If the number is “0”, then it did not and you do not need to worry about the error. The item should have been archived.

Module-specific Key Information

Exchange Systems

MailboxArchivingStats – This item may prevent

This lists any statements indicating that the item store flag will not be advanced due to the error that was just recorded. This helps you find serious errors.

ProcessExchFilters – storageDateRange =

This provides the mail item search range that Retain will use for the given mailbox. Similar to the “Delivered GTE” and “Delivered LTE” statements in the GroupWise job logs (see below).

For a more detailed explanation of reading a Worker log for an Exchange/O365 system, see “How to Read Retain Worker Logs (Exchange / O365 Jobs)“.

GroupWise Systems

delivered GTE

This provides the mail item beginning search range that Retain will use for the given mailbox.

delivered LTE

This provides the mail item ending search range that Retain will use for the given mailbox.

Gmail (Google Apps)

GmailDredger – GmailDredger.archiveMessage():

This is the call it makes for each message and for each attachment.

For messages, it reads: GmailDredger – GmailDredger.archiveMessage() called for:

It will show the user email address followed by the subject line of the message.

For attachments, it reads: GmailDredger – GmailDredger.archiveMessage() about to process attachments.

storageDateRange

This will show you the date range for items that we are passing onto Gmail.


Retain Server Log

The Retain Server log shows information of connections made by the Retain Worker, job scheduling, SQL queries, as well as indexes for the SQL server you are running on your system. It also shows you the address book and all of the users on it’s initial connection. These elements are helpful in understanding what the Retain Server is doing with the archived messages. The Retain Server also shows information on the Deletion Management. Below is a line from the Retain Server log:

2009-03-04 01:00:00,024 [RTSQuartzScheduler_Worker-1] DEBUG com.maintainet.jobs.QuartzJobController – Registering Job with name: Maintainer

Each line in the Retain Server log starts with the date and time of the process or thread. The next section is the process that the Retain Server is running during that time. Depending on the logging level of the Retain Server it can show a DEBUG or nothing. Since this log was in diagnostic logging it shows Debug. The last part of the line shows what the process is doing. In this case it is registered the job with the Maintainer-or the configuration. Each line will have this same basic information.

2009-02-23 01:02:00,029 [RTSQuartzScheduler_Worker-1] INFO com.maintainet.jobs.MaintenanceJob – Begin Maintain @Mon Feb 23 01:02:00 MST 2009

2009-02-23 01:02:00,029 [RTSQuartzScheduler_Worker-1] INFO com.maintainet.jobs.MaintenanceJob – Begin clean DB

2009-02-23 01:02:00,062 [RTSQuartzScheduler_Worker-1] INFO com.maintainet.jobs.MaintenanceJob – End AB Clean

2009-02-23 01:02:00,062 [RTSQuartzScheduler_Worker-1] INFO com.maintainet.jobs.MaintenanceJob – Begin user expiration

2009-02-23 01:02:00,078 [RTSQuartzScheduler_Worker-1] INFO com.gwava.authenticate.Authenticator – Expire Days are: 2592000

2009-02-23 01:02:00,094 [RTSQuartzScheduler_Worker-1] INFO com.maintainet.jobs.MaintenanceJob – End user expiration

2009-02-23 01:02:00,094 [RTSQuartzScheduler_Worker-1] INFO com.maintainet.jobs.MaintenanceJob – Backing up Server cfg

2009-02-23 01:02:00,095 [RTSQuartzScheduler_Worker-1] INFO com.maintainet.jobs.MaintenanceJob – Backup of Server cfg complete

2009-02-23 01:02:00,095 [RTSQuartzScheduler_Worker-1] INFO com.maintainet.jobs.MaintenanceJob – Begin backup of ebdb

2009-02-23 01:02:00,101 [RTSQuartzScheduler_Worker-1] INFO com.maintainet.jobs.MaintenanceJob – Backup of ebdb disabled

2009-02-23 01:02:00,101 [RTSQuartzScheduler_Worker-1] INFO com.maintainet.jobs.MaintenanceJob – End backup of ebdb

2009-02-23 01:02:00,101 [RTSQuartzScheduler_Worker-1] INFO com.maintainet.jobs.MaintenanceJob – Doing compression…

2009-02-23 01:02:00,106 [RTSQuartzScheduler_Worker-1] TRACE com.gwava.db.DerbyUtil – Compressing Derby…

2009-02-23 01:02:00,764 [RTSQuartzScheduler_Worker-1] TRACE com.gwava.db.DerbyUtil – Compressing Derby…

2009-02-23 01:02:02,242 [RTSQuartzScheduler_Worker-1] INFO com.maintainet.jobs.MaintenanceJob – Derby compression completed

2009-02-23 01:02:02,264 [RTSQuartzScheduler_Worker-1] INFO com.maintainet.jobs.MaintenanceJob – End compression of ebdb

2009-02-23 01:02:02,264 [RTSQuartzScheduler_Worker-1] INFO com.maintainet.jobs.MaintenanceJob – Begin index backup

2009-02-23 01:02:02,291 [RTSQuartzScheduler_Worker-1] INFO com.maintainet.jobs.MaintenanceJob – Index backup disabled

2009-02-23 01:02:02,291 [RTSQuartzScheduler_Worker-1] INFO com.maintainet.jobs.MaintenanceJob – End index backup

2009-02-23 01:02:02,291 [RTSQuartzScheduler_Worker-1] INFO com.maintainet.jobs.MaintenanceJob – Doing index optimization…

2009-02-23 01:02:02,297 [RTSQuartzScheduler_Worker-1] INFO com.maintainet.jobs.MaintenanceJob – End optimization of index

2009-02-23 01:02:02,313 [RTSQuartzScheduler_Worker-1] WARN com.gwava.deletion.DeletionTask – DeletionJob scheduled but no settings found… stopping job.

2009-02-23 01:02:02,315 [RTSQuartzScheduler_Worker-1] INFO com.maintainet.jobs.MaintenanceJob – End Maintain @Mon Feb 23 01:02:02 MST 2009

2009-02-23 01:02:02,315 [RTSQuartzScheduler_Worker-1] INFO com.maintainet.jobs.MaintenanceJob – Begin BG Index Catchup

2009-02-23 01:02:02,328 [RTSQuartzScheduler_Worker-1] DEBUG root – Server/Indexing set loglevel to: ALL

2009-02-23 01:02:02,331 [RTSQuartzScheduler_Worker-1] INFO com.maintainet.jobs.MaintenanceJob – End BG Index Catchup

2009-02-23 01:02:02,332 [RTSQuartzScheduler_Worker-1] DEBUG com.maintainet.jobs.MaintenanceJob – Running MaintenanceJob…done

2009-02-23 01:02:02,332 [RTSQuartzScheduler_Worker-1] DEBUG com.maintainet.jobs.QuartzJobController – Deregistering Job with name: Maintainer

2009-02-23 01:02:02,342 [RTSQuartzScheduler_Worker-1] DEBUG root – Server/Indexing set loglevel to: ALL

2009-02-23 01:02:02,345 [RTSQuartzScheduler_Worker-1] INFO com.maintainet.jobs.MaintenanceJob – Running SyncABookJob in MaintenanceJob…

2009-02-23 01:02:02,356 [RTSQuartzScheduler_Worker-1] DEBUG root – Server/Indexing set loglevel to: ALL

2009-02-23 01:02:02,412 [RTSQuartzScheduler_Worker-1] DEBUG com.maintainet.utils.ReloadingProperties – ReloadingProperties decodedServletFilePath: null

2009-02-23 01:02:02,413 [RTSQuartzScheduler_Worker-1] DEBUG com.maintainet.gweasysoap.EasySoap – EasySoap.class.getResource /useHTTPTunnel.properties succeeded

2009-02-23 01:02:02,784 [RTSQuartzScheduler_Worker-1] DEBUG com.maintainet.gweasysoap.AbstractEasySoap – [EasySoap.getValidUser]: accounting

2009-02-23 01:02:02,792 [RTSQuartzScheduler_Worker-1] DEBUG com.maintainet.gweasysoap.EasySoap – EasySoap.class.getResource /useHTTPTunnel.properties succeeded

2009-02-23 01:02:03,090 [RTSQuartzScheduler_Worker-1] ERROR com.maintainet.gweasysoap.AbstractEasySoap – getAnyUser

com.maintainet.gweasysoap.EasySoapException: User Database is temporarily disabled , Code: d714, info: null

at com.maintainet.gweasysoap.EasySoap.fire(EasySoap.java:372)

at com.maintainet.gweasysoap.EasySoap.login_(EasySoap.java:338)

at com.maintainet.gweasysoap.EasySoap.<init>(EasySoap.java:180)

at com.maintainet.gweasysoap.GWSoapClient.<init>(GWSoapClient.java:23)

at com.maintainet.gweasysoap.AbstractEasySoap.getValidUser(AbstractEasySoap.java:194)

at com.maintainet.jobs.SyncABookJob.processJob(SyncABookJob.java:363)

at com.maintainet.jobs.MaintenanceJob.handleAddressBookSync(MaintenanceJob.java:157)

at com.maintainet.jobs.MaintenanceJob.execute(MaintenanceJob.java:145)

at org.quartz.core.JobRunShell.run(JobRunShell.java:203)

at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:520)

2009-02-23 01:02:03,091 [RTSQuartzScheduler_Worker-1] DEBUG com.maintainet.gweasysoap.AbstractEasySoap – [EasySoap.getValidUser]: admin

2009-02-23 01:02:03,099 [RTSQuartzScheduler_Worker-1] DEBUG com.maintainet.gweasysoap.EasySoap – EasySoap.class.getResource /useHTTPTunnel.properties succeeded

2009-02-23 01:02:03,327 [RTSQuartzScheduler_Worker-1] INFO com.maintainet.gweasysoap.EasySoap – GW-Version: 8.0.0 , build: 84910, AttachmentOverHTTPSupported: true

2009-02-23 01:02:03,446 [RTSQuartzScheduler_Worker-1] INFO com.maintainet.gweasysoap.EasySoap – createCursorRequest called: GroupWiseSystemAddressBook@52

2009-02-23 01:02:03,520 [RTSQuartzScheduler_Worker-1] INFO com.maintainet.gweasysoap.EasySoap – ReadCursorResponse items:1

2009-02-23 01:02:03,520 [RTSQuartzScheduler_Worker-1] INFO com.maintainet.jobs.SyncABookJob – Group

2009-02-23 01:02:03,574 [RTSQuartzScheduler_Worker-1] INFO com.maintainet.gweasysoap.EasySoap – ReadCursorResponse items:0

2009-02-23 01:02:03,626 [RTSQuartzScheduler_Worker-1] INFO com.maintainet.gweasysoap.EasySoap – closing cursor for these many read items: 1

2009-02-23 01:02:03,682 [RTSQuartzScheduler_Worker-1] INFO com.maintainet.gweasysoap.EasySoap – createCursorRequest called: GroupWiseSystemAddressBook@52

2009-02-23 01:02:03,766 [RTSQuartzScheduler_Worker-1] INFO com.maintainet.gweasysoap.EasySoap – ReadCursorResponse items:4

2009-02-23 01:02:03,881 [RTSQuartzScheduler_Worker-1] INFO com.maintainet.gweasysoap.EasySoap – ReadCursorResponse items:0

2009-02-23 01:02:03,930 [RTSQuartzScheduler_Worker-1] INFO com.maintainet.gweasysoap.EasySoap – closing cursor for these many read items: 4

2009-02-23 01:02:04,012 [RTSQuartzScheduler_Worker-1] INFO com.maintainet.jobs.MaintenanceJob – Running SyncABookJob in MaintenanceJob…done

2009-02-23 01:02:45,504 [TP-Processor16] TRACE com.gwava.utils.ServerController – writing to logger…

You can notice that an ERROR shows up and is quite distinct from the rest of the log. This stack trace as it is called can help to identify the error and what caused it:

2009-02-23 01:02:03,090 [RTSQuartzScheduler_Worker-1] ERROR com.maintainet.gweasysoap.AbstractEasySoap – getAnyUser

com.maintainet.gweasysoap.EasySoapException: User Database is temporarily disabled , Code: d714, info: null

at com.maintainet.gweasysoap.EasySoap.fire(EasySoap.java:372)

at com.maintainet.gweasysoap.EasySoap.login_(EasySoap.java:338)

at com.maintainet.gweasysoap.EasySoap.<init>(EasySoap.java:180)

at com.maintainet.gweasysoap.GWSoapClient.<init>(GWSoapClient.java:23)

at com.maintainet.gweasysoap.AbstractEasySoap.getValidUser(AbstractEasySoap.java:194)

at com.maintainet.jobs.SyncABookJob.processJob(SyncABookJob.java:363)

at com.maintainet.jobs.MaintenanceJob.handleAddressBookSync(MaintenanceJob.java:157)

at com.maintainet.jobs.MaintenanceJob.execute(MaintenanceJob.java:145)

at org.quartz.core.JobRunShell.run(JobRunShell.java:203)

at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:520)

First of all stack traces like this are read from the bottom to the top, with the top being the last process that was done by Retain. You can see in this error message that it is reporting a SOAP issue. This process will always be listed followed by the actual error message. “User Database is temporarily disabled..” After that if there is an error code it will display it. This one is d714 which refers to a GroupWise error. The rest of the trace are the other processes that it was running when it received the error.

If you have multiple workers it will be more difficult to interprete logs if the workers are running at the same time as they will load information into the server log at that same time. However, you will be able to trace individual messages by the Store_############# tag

2014-10-03 03:30:32,430 [Store_1412332232429] INFO com.gwava.archive.StoreEmail – #begin archiving: 3F8EEC90AA63F686F8F13944BFE99467 4567FDE4.EUHSD1.PODO1.200.20000A1.1.3E1.1 220EF5347A5446405167C61FDD0189FE8CF519C6CA9592F6B1C5349E9DB54BFE

2014-10-03 03:30:32,430 [Store_1412332232429] INFO com.gwava.archive.StoreEmail – userID: rclay

2014-10-03 03:30:32,471 [Store_1412332232429] ERROR org.hibernate.util.JDBCExceptionReporter – Deadlock found when trying to get lock; try restarting transaction

2014-10-03 03:30:32,471 [Store_1412332232429] WARN com.gwava.engine.RetainDBStorageEngine – Clearing caches to avoid poisoning

2014-10-03 03:30:32,480 [Store_1412332232429] ERROR com.gwava.utils.ServerErrorHandlerStrategy – reportError: StoreEmail :: com.gwava.archive.StoreEmail.handleArchiveExceptions:566 :: EXCEPTION : org.hibernate.exception.LockAcquisitionException: could not insert: [com.gwava.dao.social.MessageProperty] org.hibernate.exception.LockAcquisitionException: could not insert: [com.gwava.dao.social.MessageProperty]

at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:107)

at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66)

at org.hibernate.id.insert.AbstractReturningDelegate.performInsert(AbstractReturningDelegate.java:64)

at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2345)

at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2852)

at org.hibernate.action.EntityIdentityInsertAction.execute(EntityIdentityInsertAction.java:71)

at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:273)

at org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:320)

at org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:203)

at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:129)

at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:210)

at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:195)

at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.performSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:117)

at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:93)

at org.hibernate.impl.SessionImpl.fireSaveOrUpdate(SessionImpl.java:685)

at org.hibernate.impl.SessionImpl.saveOrUpdate(SessionImpl.java:677)

at org.hibernate.engine.CascadingAction$5.cascade(CascadingAction.java:252)

at org.hibernate.engine.Cascade.cascadeToOne(Cascade.java:392)

at org.hibernate.engine.Cascade.cascadeAssociation(Cascade.java:335)

at org.hibernate.engine.Cascade.cascadeProperty(Cascade.java:204)

at org.hibernate.engine.Cascade.cascadeCollectionElements(Cascade.java:425)

at org.hibernate.engine.Cascade.cascadeCollection(Cascade.java:362)

at org.hibernate.engine.Cascade.cascadeAssociation(Cascade.java:338)

at org.hibernate.engine.Cascade.cascadeProperty(Cascade.java:204)

at org.hibernate.engine.Cascade.cascade(Cascade.java:161)

at org.hibernate.event.def.AbstractSaveEventListener.cascadeAfterSave(AbstractSaveEventListener.java:475)

at org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:353)

at org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:203)

at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:129)

at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:210)

at org.hibernate.event.def.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:56)

at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:195)

at org.hibernate.event.def.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:50)

at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:93)

at org.hibernate.impl.SessionImpl.fireSave(SessionImpl.java:713)

at org.hibernate.impl.SessionImpl.save(SessionImpl.java:701)

at org.hibernate.impl.SessionImpl.save(SessionImpl.java:697)

at com.gwava.engine.RetainDBStorageEngine.insertMessage(RetainDBStorageEngine.java:987)

at com.gwava.engine.RetainDBStorageEngine.dbStore2(RetainDBStorageEngine.java:418)

at com.gwava.engine.RetainDBStorageEngine.dbStore1(RetainDBStorageEngine.java:271)

at com.gwava.engine.RetainDBStorageEngine.dbStore(RetainDBStorageEngine.java:144)

at com.gwava.datastore.client.SingleProcessStorageEngine.archiveEmail(SingleProcessStorageEngine.java:101)

at com.gwava.archive.StoreEmail.handlePUT(StoreEmail.java:324)

at org.apache.jsp.Server.index_jsp._jspService(Unknown Source)

at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)

at com.gwava.Filters.ResponseFilter.doFilter(ResponseFilter.java:48)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)

at com.gwava.Filters.MainFilter.doFilter(MainFilter.java:293)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)

at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225)

at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)

at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)

at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)

at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)

at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)

at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)

at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1001)

at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:585)

at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)

at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)

at java.lang.Thread.run(Thread.java:662)

Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLTransactionRollbackException: Deadlock found when trying to get lock; try restarting transaction

at sun.reflect.GeneratedConstructorAccessor10849.newInstance(Unknown Source)

at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)

at java.lang.reflect.Constructor.newInstance(Constructor.java:513)

at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)

at com.mysql.jdbc.Util.getInstance(Util.java:386)

at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1065)

at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4074)

at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4006)

at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2468)

at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2629)

at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2719)

at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2155)

at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2450)

at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2371)

at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2355)

at com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.executeUpdate(NewProxyPreparedStatement.java:147)

at org.hibernate.id.IdentityGenerator$GetGeneratedKeysDelegate.executeAndExtract(IdentityGenerator.java:94)

at org.hibernate.id.insert.AbstractReturningDelegate.performInsert(AbstractReturningDelegate.java:57)

… 64 more

2014-10-03 03:30:32,501 [Store_1412332232429] ERROR com.gwava.archive.StoreEmail – Above error occurred while processing:<com.maintainet.archive.ASDoc>

<fileName>GWAVA message restriction digest.txt</fileName>

<meta>

<property name=”msgid” value=”4567FDE4.EUHSD1.PODO1.200.20000A1.1.3E1.1″/>

<property name=”subject” value=”GWAVA message restriction digest”/>

<property name=”uuid” value=”F3B88E82-176E-0000-B8ED-9F0026005E00″/>

<property name=”personalSubject” value=””/>

<property name=”senderDisplay” value=”&lt;EUHSDGWAVA&gt;”/>

<property name=”abSystem” value=”gw”/>

<property name=”from” value=””/>

<property name=”expireDays” value=”0″/>

<property name=”dirPathIDStr” value=”RootTrash”/>

<property name=”archiverID” value=”3F8EEC90AA63F686F8F13944BFE99467″/>

<property name=”contentType” value=”bodytext/plain”/>

<property name=”friendlyname” value=”PODSC”/>

<property name=”folderID” value=”9.EUHSD1.PODO1.100.0.1.0.1@18″/>

<property name=”priority” value=”Standard”/>

<property name=”attachmentCount” value=”0″/>

<property name=”item.class” value=”com.novell.groupwise.ws2.Mail”/>

<property name=”recipients” value=”2:Bob Clay:rclay@euhsd.k12.ca.us: ;”/>

<property name=”compressedSize” value=”71″/>

<property name=”categories” value=””/>

<property name=”filesize” value=”56″/>

<property name=”status” value=”deleted”/>

<property name=”internet” value=”true”/>

<property name=”isSubmail” value=”false”/>

<property name=”filename” value=”GWAVA message restriction digest.txt”/>

<property name=”password” value=”RlVHWUFGRUdCRkNVRlpTSlNDTENL”/>

<property name=”itemTypeString” value=”Mail”/>

<property name=”boxTypeString” value=”received”/>

<property name=”finalpart” value=”no”/>

<property name=”archiver” value=”RetainWorker”/>

<property name=”created” value=”1164471888″/>

<property name=”hash” value=”220EF5347A5446405167C61FDD0189FE8CF519C6CA9592F6B1C5349E9DB54BFE”/>

<property name=”userid” value=”rclay”/>

<property name=”jobid” value=”8A3C4B084BA4EEC02F1B20A2D410FC26″/>

<property name=”dirPath” value=”Bob Clay HomeTrash”/>

<property name=”delivered” value=”1164471908″/>

<property name=”emailSystem” value=”gw”/>

</meta>

<category></category>

<createdDate>1412332232</createdDate>

<modifiedDate>1412332232</modifiedDate>

<creator>null</creator>

<archiver>RetainWorker</archiver>

<archiverID>3F8EEC90AA63F686F8F13944BFE99467</archiverID>

<serverName>null</serverName>

<size>56</size>

<compressedSize>71</compressedSize>

<volume>null</volume>

<dirPath>Bob Clay HomeTrash</dirPath>

<dirPathIDs>RootTrash</dirPathIDs>

<zid>noZID</zid>

<trustees/>

<catVolID>0</catVolID>

<encryptionMethod>none</encryptionMethod>

<compressionMethod>none</compressionMethod>

<retention>0</retention>

</com.maintainet.archive.ASDoc>

2014-10-03 03:30:32,501 [Store_1412332232429] INFO com.gwava.archive.StoreEmail – #done archiving: 4567FDE4.EUHSD1.PODO1.200.20000A1.1.3E1.1 220EF5347A5446405167C61FDD0189FE8CF519C6CA9592F6B1C5349E9DB54BFE

2014-10-03 03:31:52,643 [Store_1412332232429] INFO jsp.server.index – ==========================================================================================


Each of the logs and errors will display something very similar to this. At times, certain errors might just show a [WARN]. But critical or fatal errors will display [ERROR] and provide you more information. Additional Logs

There are more logs with Retain that may be helpful. They are not used as often as the Retain Server and Retain Worker log but can still be a great help in troubleshooting certain problems.

The Indexer.log is a log that shows the maintenance and indexing performed by Retain. This is helpful to see what indexing has been done on the Retain system that day. Be warned there is only one indexing log per day for this, unlike the Retain Server and Retain Worker logs. This log is found in the same location as the Retain Server logs.

Tomcat, Apache, Catalina, SQL server logs can also be very helpful in troubleshooting each of those products. GWAVA technicians may use these to help troubleshoot certain areas of Retain. The tomcat and apache logs are found within the respected apache or tomcat directories. Catalina sits side by side with the tomcat logs. The SQL server logs are usually found where the program is installed.

If you suspect there are errors within Retain, consult the log files. If you need extra assistance with reading log files contact a GWAVA technical support and they can help you to determine errors or help with viewing and understanding the logs.

Related:

Leave a Reply