kpwd: add support for multiple GIDs

Storage-authzdb supports the use of multiple GIDs.

While the Kpwd file allows the login-line to have
a comma-separated list of GIDs, these are not used
anywhere in the gPlazma plugin for Kpwd, but are
only accessed in the Kpwd Login strategy class.

Also, the passwd line still takes only one GID.

This patch adds support throughout KPWD for multiple
gids.  This is particularly useful, for instance,
in allowing authorization of the webadmin pages
without having to create a cell-specific gPlazma
module (all one needs to do is append the webadmin
admin gid to the user's gids, and include kpwd mapping
as sufficient/optional in the gPlazma config).

There are two things I am unsure of.

1.  If UserMetaDataProviderFnal is still used,
    should it report all the gids, or just the primary?
    (I have left it for now in the latter state).
2.  Is the main() entry point on the KAuthFile class
    still used?  If so, I have kept the
    modify method such that it will only allow
    a single GID for the moment (not understanding
    how this works or where it is used).

Testing: Tested writes and webadmin login, varying the presence
or absence of the admin-gid on my login and passwd lines.

Target: master
Patch: https://rb.dcache.org/r/7159
Require-book: yes
Require-notes: yes
Acked-by: Gerd Behrmann

BOOK
RELEASE NOTES

Multiple Gids are now supported on both the
login and passwd lines of the KPWD file, and
are accessed by the map plugin for Kpwd.
These should be given as a comma-separated
list, with the primary gid first.
bugfix: fix reverseMap not throwing NoSuchPrincipalExceptions

Instead of throwing a NoSuchPrincipalException on failed reverse
mappings the Ldap plugin would just return an empty set.
This fixed this misbehaviour.

Ticket: http://rt.dcache.org/Ticket/Display.html?id=8422
Acked-by: Paul
Target: trunk
Target: 2.7
Target: 2.8
Target: 2.9
Target: 2.10
Require-book: no
Require-notes: yes
xrootd: Add billing entry on delete

In contrast to other doors, the xrootd door failed to generate billing
notifications on file deletion. This patch resolves this issue.

Target: trunk
Require-notes: yes
Require-book: no
Request: 2.10
Request: 2.9
Request: 2.8
Request: 2.7
Request: 2.6
Acked-by: Paul Millar <paul.millar@desy.de>
Patch: https://rb.dcache.org/r/7190/
poolmanager: Suppress stack trace in case of unmatch units

The patch suppresses stack traces like the following:

03 Aug 2014 06:40:09 (PoolManager) [door:NFS-fax-dcap-proxy@faxDomain:1407040808696 NFS-fax-dcap-proxy PoolMgrSelectReadPool 0000D36F8581AC7043118452477B188E6EC1] Read pool selection failed
java.lang.IllegalArgumentException: Unit not matched : 0:0:0:0:0:0:0:1
        at diskCacheV111.poolManager.PoolSelectionUnitV2.match(PoolSelectionUnitV2.java:545) ~[dcache-core-2.9.6.jar:2.9.6]
        at diskCacheV111.poolManager.PoolMonitorV5$PnfsFileLocation.selectReadPool(PoolMonitorV5.java:234) ~[dcache-core-2.9.6.jar:2.9.6]
        at diskCacheV111.poolManager.RequestContainerV5$PoolRequestHandler.askIfAvailable(RequestContainerV5.java:2008) [dcache-core-2.9.6.jar:2.9.6]
        at diskCacheV111.poolManager.RequestContainerV5$PoolRequestHandler.stateEngine(RequestContainerV5.java:1488) [dcache-core-2.9.6.jar:2.9.6]
        at diskCacheV111.poolManager.RequestContainerV5$PoolRequestHandler.stateLoop(RequestContainerV5.java:1266) [dcache-core-2.9.6.jar:2.9.6]
        at diskCacheV111.poolManager.RequestContainerV5$PoolRequestHandler.access$2300(RequestContainerV5.java:691) [dcache-core-2.9.6.jar:2.9.6]
        at diskCacheV111.poolManager.RequestContainerV5$PoolRequestHandler$RunEngine.run(RequestContainerV5.java:1197) [dcache-core-2.9.6.jar:2.9.6]
        at org.dcache.util.FireAndForgetTask.run(FireAndForgetTask.java:31) [dcache-core-2.9.6.jar:2.9.6]
        at org.dcache.util.CDCExecutorServiceDecorator$1.run(CDCExecutorServiceDecorator.java:104) [dcache-core-2.9.6.jar:2.9.6]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [na:1.7.0_65]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [na:1.7.0_65]
        at java.lang.Thread.run(Thread.java:745) [na:1.7.0_65]

Target: trunk
Request: 2.10
Request: 2.9
Request: 2.8
Request: 2.7
Request: 2.6
Require-notes: yes
Require-book: no
Acked-by: Paul Millar <paul.millar@desy.de>
Patch: https://rb.dcache.org/r/7194/
gplazma: Fix JVM implementation dependency in unit test

The ListCommand outputs plugins in hash table order - this ordering is
implementation dependent, which in turn causes the
ListCommandTests.testDetailedList unit test to fail with some JVMs (eg Oracle
JDK 8).

Target: trunk
Request: 2.10
Request: 2.9
Request: 2.8
Request: 2.7
Request: 2.6
Require-notes: no
Require-book: no
Acked-by: Paul Millar <paul.millar@desy.de>
Patch: https://rb.dcache.org/r/7196/
Make JDK byte code verification bug workaround Java 8 compatible

A workaround for a JDK bug that affects PowerMock only work with Java 7.
The -UseSplitVerifier option is no longer supported in Java 8. As an
alternative workaround, this patch disables the byte code verifier
entirely. Since this is only used with our own unit tests, the impact
is low.

Target: trunk
Request: 2.10
Request: 2.9
Request: 2.8
Request: 2.7
Request: 2.6
Require-notes: no
Requier-book: no
Acked-by: Paul Millar <paul.millar@desy.de>
Patch: https://rb.dcache.org/r/7197/
info: Fix HashMap ordering assumption in unit test

The unit test assumes a particular serialized form of the state tree
nodes, which isn't guaranteed when iterating over a HashMap. This causes
the unit tests to fail with some JDKs, in particular JDK 8.

Target: trunk
Request: 2.10
Request: 2.9
Request: 2.8
Request: 2.7
Request: 2.6
Require-notes: no
Require-book: no
Acked-by: Paul Millar <paul.millar@desy.de>
Patch: https://rb.dcache.org/r/7198/
Update third party libraries

A single use of Generics had to be fixed due to API changes in
SLF4j.

Target: trunk
Require-notes: no
Require-book: no
Acked-by: Paul Millar <paul.millar@desy.de>
Patch: https://rb.dcache.org/r/7199/
pool: Resolve high memory usage and other issues in sweeper

Space sweeper while reclaiming loads the meta data entry of the
files it will remove. This consumes a lot of memory, in particular
when the entire pool is purged, causing OOM in the worst case.

This patch resolves this issue. The patch also resolves an issue
with the 'sweeper ls' command which would block the message thread.

Finally, log messages indicating the end of long running operations
in sweeper and for 'rep rmclass' have been added. This allows the
admin to detect when these operations have finished. Other log messages
have been refined too, including lowering the log level of several
messages.

Target: trunk
Request: 2.10
Request: 2.9
Request: 2.8
Request: 2.7
Request: 2.6
Require-notes: yes
Require-book: yes
Acked-by: Paul Millar <paul.millar@desy.de>
Patch: https://rb.dcache.org/r/7195/
chimera: create missing index i_dirs_iparent

speedups remove operation

Acked-by: Albert Rossi
Acked-by: Paul Millar
Target: master, 2.6, 2.7, 2.8, 2.9, 2.10
Require-book: no
Require-notes: yes
gplazma: make plugin creation caching optional

This patch introduces the gplazma.enable.plugin-creation-caching configuration property that
allows the admin to switch off the plugin cache.  This is useful as the cache is arguable a
misfeature and, in its current form, can lead to undesirable behaviour.

A subsequent patch (targeted at master only) will remove this feature.

Target: master
Patch: https://rb.dcache.org/r/7210/
Acked-by: Tigran Mkrtchyan
Request: 2.10
Request: 2.9
Request: 2.8
Request: 2.7
Request: 2.6
Require-notes: true
Require-book: no
acl: add heuristic to detect acl format

there are two ways to define acl:

USER:7:rlwfx:o:ALLOW:FFFF
and
USER:7:i+rlwfx:o:FFFF

make ACE#parse() smart enouth to detect that.

Ticket: #8424
Acked-by: Karsten Schwank
Target: master, 2.10
Require-book: no
Require-notes: no