summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHaakon Dybdahl <dybis@users.noreply.github.com>2016-09-07 15:33:50 +0200
committerGitHub <noreply@github.com>2016-09-07 15:33:50 +0200
commit8151ac9e0de274921f9378d542b7e5416c1e554f (patch)
tree9856aad87e550f74636f582e18e8b935d1f254f9
parent36417951a7a61a1923c3b4ba99ba5a48cecef439 (diff)
parent974cf71a25474a7181d74e51f8d4a8b467603e19 (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.java26
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);