public Object metastoreDelete()

in src/main/java/com/netflix/bdp/s3mper/listing/ConsistentListingAspect.java [620:676]


    public Object metastoreDelete(final ProceedingJoinPoint pjp) throws Throwable {
        if(disabled) {
            return pjp.proceed();
        }
        
        Configuration conf = ((FileSystem) pjp.getTarget()).getConf();
        updateConfig(conf);
        
        Path deletePath = (Path) pjp.getArgs()[0];
        
        boolean recursive = false;
            
        if(pjp.getArgs().length > 1) {
            recursive = (Boolean) pjp.getArgs()[1];
        }
            
        try {
            FileSystem s3fs = (FileSystem) pjp.getTarget();

            Set<Path> filesToDelete = new HashSet<Path>();
            filesToDelete.add(deletePath);
            
            List<FileInfo> metastoreFiles = metastore.list(Collections.singletonList(deletePath));
            
            for(FileInfo f : metastoreFiles) {
                filesToDelete.add(f.getPath());
            }
            
            try {
                if(s3fs.getFileStatus(deletePath).isDir() && recursive) {
                    filesToDelete.addAll(recursiveList(s3fs, deletePath));
                }
            } catch (Exception e) {
                log.info("A problem occurred deleting path: " + deletePath +" "+ e.getMessage());
            }
            
            for(Path path : filesToDelete) {
                metastore.delete(path);
            }
        } catch (TimeoutException t) {
            log.error("Timeout occurred deleting metastore path: " + deletePath, t);
            
            alertDispatcher.timeout("metastoreDelete", Collections.singletonList(deletePath));
            
            if(failOnTimeout) {
                throw t;
            }
        } catch (Exception e) {
            log.error("Error deleting paths from metastore: " + deletePath, e);
            
            if(shouldFail(conf)) {
                throw e;
            }
        }
        
        return pjp.proceed();
    }