diff --git a/modules/dcache-resilience/src/main/java/org/dcache/resilience/admin/ResilienceCommands.java b/modules/dcache-resilience/src/main/java/org/dcache/resilience/admin/ResilienceCommands.java index 2f748a0433d..46ea593e040 100644 --- a/modules/dcache-resilience/src/main/java/org/dcache/resilience/admin/ResilienceCommands.java +++ b/modules/dcache-resilience/src/main/java/org/dcache/resilience/admin/ResilienceCommands.java @@ -85,10 +85,13 @@ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING import diskCacheV111.util.CacheException; import diskCacheV111.util.PnfsId; + import dmg.cells.nucleus.CellCommandListener; import dmg.util.command.Argument; import dmg.util.command.Command; import dmg.util.command.Option; + +import org.dcache.resilience.data.FileCancelFilter; import org.dcache.resilience.data.FileFilter; import org.dcache.resilience.data.FileOperation; import org.dcache.resilience.data.FileOperationMap; @@ -607,7 +610,7 @@ protected String doCall() throws Exception { return "Please provide a non-empty string value for state."; } - FileFilter filter = new FileFilter(); + FileFilter filter = new FileCancelFilter(); if (!"*".equals(pnfsids)) { filter.setLastUpdateBefore(getTimestamp(lastUpdateBefore)); diff --git a/modules/dcache-resilience/src/main/java/org/dcache/resilience/data/FileCancelFilter.java b/modules/dcache-resilience/src/main/java/org/dcache/resilience/data/FileCancelFilter.java new file mode 100644 index 00000000000..f196811c74e --- /dev/null +++ b/modules/dcache-resilience/src/main/java/org/dcache/resilience/data/FileCancelFilter.java @@ -0,0 +1,81 @@ +/* +COPYRIGHT STATUS: +Dec 1st 2001, Fermi National Accelerator Laboratory (FNAL) documents and +software are sponsored by the U.S. Department of Energy under Contract No. +DE-AC02-76CH03000. Therefore, the U.S. Government retains a world-wide +non-exclusive, royalty-free license to publish or reproduce these documents +and software for U.S. Government purposes. All documents and software +available from this server are protected under the U.S. and Foreign +Copyright Laws, and FNAL reserves all rights. + +Distribution of the software available from this server is free of +charge subject to the user following the terms of the Fermitools +Software Legal Information. + +Redistribution and/or modification of the software shall be accompanied +by the Fermitools Software Legal Information (including the copyright +notice). + +The user is asked to feed back problems, benefits, and/or suggestions +about the software to the Fermilab Software Providers. + +Neither the name of Fermilab, the URA, nor the names of the contributors +may be used to endorse or promote products derived from this software +without specific prior written permission. + +DISCLAIMER OF LIABILITY (BSD): + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL FERMILAB, +OR THE URA, OR THE U.S. DEPARTMENT of ENERGY, OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT +OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +Liabilities of the Government: + +This software is provided by URA, independent from its Prime Contract +with the U.S. Department of Energy. URA is acting independently from +the Government and in its own private capacity and is not acting on +behalf of the U.S. Government, nor as its contractor nor its agent. +Correspondingly, it is understood and agreed that the U.S. Government +has no connection to this software and in no manner whatsoever shall +be liable for nor assume any responsibility or obligation for any claim, +cost, or damages arising out of or resulting from the use of the software +available from this server. + +Export Control: + +All documents and software available from this server are subject to U.S. +export control laws. Anyone downloading information from this server is +obligated to secure any necessary Government licenses before exporting +documents or software obtained from this server. + */ +package org.dcache.resilience.data; + +/** + *
Filter used specifically with cancel operations. The + * matching logic is slightly different.
+ */ +public class FileCancelFilter extends FileFilter { + protected boolean matchesPool(String toMatch, + Integer operationValue, + PoolInfoMap map) { + if (operationValue != null && + !map.isValidPoolIndex(operationValue)) { + /* + * since this is a cancel operation, + * if the pool does not exist, we should + * cancel it not matter what the toMatch value is. + */ + return true; + } + return super.matchesPool(toMatch, operationValue, map); + } +} diff --git a/modules/dcache-resilience/src/main/java/org/dcache/resilience/data/FileFilter.java b/modules/dcache-resilience/src/main/java/org/dcache/resilience/data/FileFilter.java index f34fa016eae..5bfa7ac6e00 100644 --- a/modules/dcache-resilience/src/main/java/org/dcache/resilience/data/FileFilter.java +++ b/modules/dcache-resilience/src/main/java/org/dcache/resilience/data/FileFilter.java @@ -67,7 +67,7 @@ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING /** *Simple implementation of matcher.
*/ -public final class FileFilter implements FileMatcher { +public class FileFilter implements FileMatcher { private Set