You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-issues@jackrabbit.apache.org by "Francesco Mari (JIRA)" <ji...@apache.org> on 2016/07/27 08:46:20 UTC
[jira] [Commented] (OAK-4608) Unify background operation impls
[ https://issues.apache.org/jira/browse/OAK-4608?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15395253#comment-15395253 ]
Francesco Mari commented on OAK-4608:
-------------------------------------
Everything that reduces code footprint is always welcome, but I personally don't like the inheritance relationship between {{PeriodicOperation}} and {{TriggeredOperation}}. It might be a personal preference, but I liked them to be distinct classes with distinct public interfaces. The methods {{trigger()}} and {{start()}} made clear that they had different usage patterns.
Also, including a fixed timeout in the implementation of the {{close()}} method makes that method tied to what we consider to be a good timeout for the use case of the {{FileStore}}. Maybe a different solution that would still have the benefits of your proposal would be to create an interface for both {{PeriodicOperation}} and {{TriggeredOperation}}:
{code}
interface BackgroundOperation {
String name();
boolean stop(long timeout, TimeUnit timeUnit) throws InterruptedException;
}
class TriggeredOperation implements BackgroundOperation {
...
}
class PeriodicOperation implements BackgroundOperation {
...
}
{code}
You can then create a utility method to convert a {{BackgroundOperation}} into a {{Closeable}}:
{code}
static Closeable asCloseable(BackgroundOperation op, long timeout, TimeUnit unit) {
return new Closeable() {
@Override
public void close() throws IOException {
try {
if (op.stop(timeout, unit)) {
log.debug("{} was successfully shut down", op.name());
} else {
log.warn("{} takes too long to shutdown", op.getName());
}
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
}
}
}
}
{code}
What do you think?
> Unify background operation impls
> --------------------------------
>
> Key: OAK-4608
> URL: https://issues.apache.org/jira/browse/OAK-4608
> Project: Jackrabbit Oak
> Issue Type: Improvement
> Components: segment-tar
> Reporter: Alex Parvulescu
> Assignee: Alex Parvulescu
>
> I unified the 2 background operation implementations and made then extend {{Closeable}}, this reduces the code footprint a bit and makes it easier for me to add a new operation.
> [~frm], [~mduerig] change is in this commit, please review!
> https://github.com/stillalex/jackrabbit-oak/commit/01b81cc068db8200fa736d96bd3abb064f988590
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)