tree f180cb5554bdc514825a370964e7897a52f2e780
parent 9fd7b18d5da1acc92ae0192ff42dcfee2098fdaf
author Michael Marshall <47911938+michaeljmarshall@users.noreply.github.com> 1617304052 -0600
committer GitHub <noreply@github.com> 1617304052 -0700
gpgsig -----BEGIN PGP SIGNATURE-----
 
 wsBcBAABCAAQBQJgZhn0CRBK7hj4Ov3rIwAAdHIIAIknR2VuhjGeOrLMNGjmAYMg
 4GcYu9o7R6vKzMbJdkYjYPYUdrH5FAT+xafy7uai1zWpSkEtrqAZUH33LE8wCiRl
 K6yonVhJEF+unQDF/IuzJKC9LzwD7h77EwGzO1Z3qamNLx2fT+a99W6EA9sC/QL6
 +3GcUkcc/58bZtC1gvumv0+9xWWRwiFShkarEcKW1fcXhaVTTqCOO67caMf98qsj
 S224MLCtAl/78PAfmXJahkPwLcOHO/FCfa2CSLS9c2VqqmnqdryIy9Jisf0lgITi
 9cyyuQotAt/bso1kvdhTB0bNcDbSvWhFAUjRivdalFwl1TigsgkrxEyfydZ3pR4=
 =RAmZ
 -----END PGP SIGNATURE-----
 

[Tiered Storage] Prevent Class Loader Leak; Restore Offloader Directory Override (#9878)

### Motivation

In Pulsar 2.7.0, there is a class loader leak. It looks like https://github.com/apache/pulsar/pull/8739 fixed the leak by only loading the offloader classes for the directory configured in `broker.conf`. However, the solution in https://github.com/apache/pulsar/pull/8739 ignores the fact that an offload policy can override the the offloaded directory. As such, there could be a regression in 2.7.1 if users are providing multiple offload directories.

This PR returns the functionality without reintroducing the class loader leak.

### Modifications

Update the `PulsarService` and the `PulsarConnectorCache` classes to use a map from directory strings to `Offloaders`.

### Alternative Approaches

The new `Map` has keys of type `String`, but we could use keys of type `Path` and then normalize the paths to ensure that `./offloaders` and `offloaders` result in a single class loader. However, it looks like the `normalize` method in the path class has a warning about symbolic links. As such, I went with the basic `String` approach, which might lead to some duplication of loaded classes. Below is the javadoc for `normalize`, in case that helps for a design decision.

```java
  /**
     * Returns a path that is this path with redundant name elements eliminated.
     *
     * <p> The precise definition of this method is implementation dependent but
     * in general it derives from this path, a path that does not contain
     * <em>redundant</em> name elements. In many file systems, the "{@code .}"
     * and "{@code ..}" are special names used to indicate the current directory
     * and parent directory. In such file systems all occurrences of "{@code .}"
     * are considered redundant. If a "{@code ..}" is preceded by a
     * non-"{@code ..}" name then both names are considered redundant (the
     * process to identify such names is repeated until it is no longer
     * applicable).
     *
     * <p> This method does not access the file system; the path may not locate
     * a file that exists. Eliminating "{@code ..}" and a preceding name from a
     * path may result in the path that locates a different file than the original
     * path. This can arise when the preceding name is a symbolic link.
     *
     * @return  the resulting path or this path if it does not contain
     *          redundant name elements; an empty path is returned if this path
     *          does have a root component and all name elements are redundant
     *
     * @see #getParent
     * @see #toRealPath
     */
    Path normalize();
```

### Verifying this change

This change is a code cleanup without any test coverage that should be covered by other tests. If required, I can create some tests.