diff options
author | Haakon Dybdahl <dybis@users.noreply.github.com> | 2016-09-07 15:33:50 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-09-07 15:33:50 +0200 |
commit | 8151ac9e0de274921f9378d542b7e5416c1e554f (patch) | |
tree | 9856aad87e550f74636f582e18e8b935d1f254f9 | |
parent | 36417951a7a61a1923c3b4ba99ba5a48cecef439 (diff) | |
parent | 974cf71a25474a7181d74e51f8d4a8b467603e19 (diff) |
Merge pull request #583 from yahoo/freva/node-admin-repoTags-null
Fix for NullPointerException with repoTags
-rw-r--r-- | docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/DockerImpl.java | 26 |
1 files changed, 24 insertions, 2 deletions
diff --git a/docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/DockerImpl.java b/docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/DockerImpl.java index b2384fbca7e..ee135cc2908 100644 --- a/docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/DockerImpl.java +++ b/docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/DockerImpl.java @@ -298,11 +298,11 @@ public class DockerImpl implements Docker { for (Map.Entry<String, Image> entry : dockerImagesByImageId.entrySet()) { String[] repoTags = entry.getValue().getRepoTags(); // If no tags present, fall back to image ID - if (repoTags.length == 0 || repoTags[0].isEmpty()) { + if (repoTags == null || repoTags.length == 0) { dockerImageByImageTags.put(entry.getKey(), entry.getValue()); } else { for (String tag : repoTags) { - if (!tag.isEmpty()) { + if (tag != null && !tag.isEmpty()) { dockerImageByImageTags.put(tag, entry.getValue()); } } @@ -332,6 +332,28 @@ public class DockerImpl implements Docker { List<Image> images = dockerClient.listImagesCmd().withShowAll(true).exec(); Map<String, Image> dockerImageByImageId = images.stream().collect(Collectors.toMap(Image::getId, img -> img)); + // TODO: Remove remove this after all cases of repo tags have been found + for (Image image : dockerImageByImageId.values()) { + if (image.getRepoTags() == null) { + logger.info("^^^ Repo tags are null: " + image.getId()); + } else if (image.getRepoTags().length == 0) { + logger.info("^^^ Repo tags array is empty: " + image.getId()); + } else { + List<String> repoTagsList = Arrays.asList(image.getRepoTags()); + if (repoTagsList.contains(null)) { + logger.info("^^^ Repo tags array contained null tag: " + image.getId()); + } else if (repoTagsList.contains("")) { + logger.info("^^^ Repo tags array contained empty tag: " + image.getId()); + } + } + + if (image.getParentId() == null) { + logger.info("^^^ Parent ID is null"); + } else if (image.getParentId().isEmpty()) { + logger.info("^^^ Parent ID is empty"); + } + } + List<com.github.dockerjava.api.model.Container> containers = dockerClient.listContainersCmd().withShowAll(true).exec(); Map<String, Image> unusedImagesByContainers = filterOutImagesUsedByContainers(dockerImageByImageId, containers); Map<String, Image> unusedImagesByExcept = filterOutExceptImages(unusedImagesByContainers, except); |