[jira] [Assigned] (OAK-6890) Background threads might not be automatically restarted
[ https://issues.apache.org/jira/browse/OAK-6890?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Francesco Mari reassigned OAK-6890: --- Assignee: Francesco Mari (was: Michael Dürig) > Background threads might not be automatically restarted > --- > > Key: OAK-6890 > URL: https://issues.apache.org/jira/browse/OAK-6890 > Project: Jackrabbit Oak > Issue Type: Bug > Components: segment-tar >Reporter: Francesco Mari >Assignee: Francesco Mari >Priority: Critical > Labels: resilience > Fix For: 1.8, 1.7.12 > > > The background threads used in {{FileStore}} are implemented by wrapping > {{Runnable}} instances in {{SafeRunnable}}, and by handing the > {{SafeRunnable}} instances over to a {{ScheduledExecutorService}}. > The documentation of {{ScheduledExecutorService#scheduleAtFixedRate}} states > that "if any execution of the task encounters an exception, subsequent > executions are suppressed". But a {{SafeRunnable}} always re-throws any > {{Throwable}} that it catches, effectively preventing itself from executing > again in the future. > There is more than one solution to this problem. One of these is to never > re-throw any exception. Even if it doesn't always make sense, e.g. in case of > an {{OutOfMemoryError}}, never re-throwing an exception would better fulfil > the assumption that background threads should always be up and running even > in case of error. -- This message was sent by Atlassian JIRA (v6.4.14#64029)
[jira] [Assigned] (OAK-6890) Background threads might not be automatically restarted
[ https://issues.apache.org/jira/browse/OAK-6890?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Michael Dürig reassigned OAK-6890: -- Assignee: Michael Dürig > Background threads might not be automatically restarted > --- > > Key: OAK-6890 > URL: https://issues.apache.org/jira/browse/OAK-6890 > Project: Jackrabbit Oak > Issue Type: Bug > Components: segment-tar >Reporter: Francesco Mari >Assignee: Michael Dürig > Labels: resilience > Fix For: 1.8, 1.7.12 > > > The background threads used in {{FileStore}} are implemented by wrapping > {{Runnable}} instances in {{SafeRunnable}}, and by handing the > {{SafeRunnable}} instances over to a {{ScheduledExecutorService}}. > The documentation of {{ScheduledExecutorService#scheduleAtFixedRate}} states > that "if any execution of the task encounters an exception, subsequent > executions are suppressed". But a {{SafeRunnable}} always re-throws any > {{Throwable}} that it catches, effectively preventing itself from executing > again in the future. > There is more than one solution to this problem. One of these is to never > re-throw any exception. Even if it doesn't always make sense, e.g. in case of > an {{OutOfMemoryError}}, never re-throwing an exception would better fulfil > the assumption that background threads should always be up and running even > in case of error. -- This message was sent by Atlassian JIRA (v6.4.14#64029)