(
final CoreDescriptor desc,
boolean deleteIndexDir,
boolean deleteDataDir,
boolean deleteInstanceDir)
| 3291 | } |
| 3292 | if (deleteInstanceDir) { |
| 3293 | addCloseHook( |
| 3294 | new CloseHook() { |
| 3295 | @Override |
| 3296 | public void postClose(SolrCore core) { |
| 3297 | if (desc != null) { |
| 3298 | try { |
| 3299 | PathUtils.deleteDirectory(desc.getInstanceDir()); |
| 3300 | } catch (IOException e) { |
| 3301 | log.error( |
| 3302 | "Failed to delete instance dir for core: {} dir: {}", |
| 3303 | core.getName(), |
| 3304 | desc.getInstanceDir(), |
| 3305 | e); |
| 3306 | } |
| 3307 | } |
| 3308 | } |
| 3309 | }); |
| 3310 | } |
| 3311 | } |
| 3312 | |
| 3313 | public static void deleteUnloadedCore( |
| 3314 | CoreDescriptor cd, boolean deleteDataDir, boolean deleteInstanceDir) { |
| 3315 | if (deleteDataDir) { |
| 3316 | Path instanceDir = cd.getInstanceDir(); |
| 3317 | Path dataDir = instanceDir.resolve(cd.getDataDir()); |
| 3318 | try { |
| 3319 | PathUtils.deleteDirectory(dataDir); |
| 3320 | } catch (IOException e) { |
| 3321 | log.error( |
| 3322 | "Failed to delete data dir for unloaded core: {} dir: {}", |
| 3323 | cd.getName(), |
| 3324 | dataDir.toAbsolutePath(), |
| 3325 | e); |
| 3326 | } |
| 3327 | String ulogDir = cd.getUlogDir(); |
| 3328 | if (ulogDir != null) { |
| 3329 | Path ulogDirPath = instanceDir.resolve(ulogDir); |
| 3330 | if (!ulogDirPath.startsWith(dataDir) |
| 3331 | && (!deleteInstanceDir || !ulogDirPath.startsWith(instanceDir))) { |
| 3332 | // external ulogDir, we have to remove it explicitly |
| 3333 | try { |
| 3334 | Path tlogPath = |
| 3335 | UpdateLog.ulogToTlogDir(cd.getName(), ulogDirPath, instanceDir, dataDir.toString()); |
| 3336 | PathUtils.deleteDirectory(tlogPath); |
| 3337 | } catch (IOException e) { |
| 3338 | log.error( |
| 3339 | "Failed to delete external ulog dir for core: {} ulogDir: {}", |
| 3340 | cd.getName(), |
| 3341 | ulogDirPath, |
| 3342 | e); |
| 3343 | } |
| 3344 | } |
| 3345 | } |
| 3346 | } |
| 3347 | if (deleteInstanceDir) { |
| 3348 | try { |
| 3349 | PathUtils.deleteDirectory(cd.getInstanceDir()); |
| 3350 | } catch (IOException e) { |
no test coverage detected