[ 
https://issues.apache.org/jira/browse/CONNECTORS-1156?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14310627#comment-14310627
 ] 

Karl Wright commented on CONNECTORS-1156:
-----------------------------------------

I determined, with some effort, that Adrian's issue was due in part to the 
database being so badly in need of vacuuming that even basic query performance 
was poor.  Adrian has many many jobs as well, all on schedules, and so multiple 
jobs wind up being in the "starting up" state eventually under those 
conditions.  The problem in ManifoldCF here was that under certain error 
conditions, it did not *immediately* throw an INTERRUPTED ManifoldCFException 
up the stack, but instead attempted to process everything first before throwing 
the error.  That would cause failure shutting down, because *all* queries would 
fail.

This could also be the problem Aeham was seeing, because the same startup 
thread would be involved in initializing multiple jobs, which might also have a 
very extended initialization period.  However, Aeham's description of the 
context was not sufficiently detailed for me to be sure of this.

> Can't shut down agents service when automatic ANALYZE TABLE, or any 
> long-running query, is happening
> ----------------------------------------------------------------------------------------------------
>
>                 Key: CONNECTORS-1156
>                 URL: https://issues.apache.org/jira/browse/CONNECTORS-1156
>             Project: ManifoldCF
>          Issue Type: Bug
>          Components: Framework agents process
>    Affects Versions: ManifoldCF 1.8, ManifoldCF 2.0
>            Reporter: Karl Wright
>            Assignee: Karl Wright
>             Fix For: ManifoldCF 1.9, ManifoldCF 2.1
>
>         Attachments: sqlstate.patch
>
>
> This was detected on MCF 1.8.
> The thread blocking shutdown had the following trace:
> {code}
> "Startup thread" daemon prio=10 tid=0x00007fe73012f000 nid=0x340b in 
> Object.wait() [0x00007fe71f7f6000]
>    java.lang.Thread.State: WAITING (on object monitor)
>     at java.lang.Object.wait(Native Method)
>     at java.lang.Thread.join(Thread.java:1281)
>     - locked <0x00000000e851a0b8> (a 
> org.apache.manifoldcf.core.database.Database$ExecuteQueryThread)
>     at java.lang.Thread.join(Thread.java:1355)
>     at 
> org.apache.manifoldcf.core.database.Database$ExecuteQueryThread.finishUp(Database.java:694)
>     at 
> org.apache.manifoldcf.core.database.Database.executeViaThread(Database.java:728)
>     at 
> org.apache.manifoldcf.core.database.Database.executeUncachedQuery(Database.java:790)
>     at 
> org.apache.manifoldcf.core.database.Database$QueryCacheExecutor.create(Database.java:1444)
>     at 
> org.apache.manifoldcf.core.cachemanager.CacheManager.findObjectsAndExecute(CacheManager.java:146)
>     at 
> org.apache.manifoldcf.core.database.Database.executeQuery(Database.java:191)
>     at 
> org.apache.manifoldcf.core.database.DBInterfacePostgreSQL.performModification(DBInterfacePostgreSQL.java:656)
>     at 
> org.apache.manifoldcf.core.database.DBInterfacePostgreSQL.analyzeTableInternal(DBInterfacePostgreSQL.java:1431)
>     at 
> org.apache.manifoldcf.core.database.DBInterfacePostgreSQL.noteModificationsNoTransactions(DBInterfacePostgreSQL.java:1576)
>     at 
> org.apache.manifoldcf.core.database.Database.playbackModifications(Database.java:429)
>     at 
> org.apache.manifoldcf.core.database.Database.endTransaction(Database.java:414)
>     at 
> org.apache.manifoldcf.core.database.DBInterfacePostgreSQL.endTransaction(DBInterfacePostgreSQL.java:1231)
>     at 
> org.apache.manifoldcf.crawler.jobs.JobManager.resetStartupJob(JobManager.java:7575)
>     at 
> org.apache.manifoldcf.crawler.system.StartupThread.run(StartupThread.java:238)
> {code}
> This was after many minutes of waiting for the shutdown to take place, so 
> clearly it's looping in the sense that it keeps starting an ANALYZE, gets 
> interrupted, and retries indefinitely.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to