[arvados] updated: 2.7.1-32-g2ba29cdc5e

git repository hosting git at public.arvados.org
Thu Mar 21 15:55:50 UTC 2024


Summary of changes:
 build/package-build-dockerfiles/centos7/Dockerfile |  3 +-
 .../package-build-dockerfiles/debian10/Dockerfile  |  3 +-
 lib/cloud/ec2/ec2.go                               | 10 ++++-
 lib/cloud/ec2/ec2_test.go                          | 51 ++++++++++++++++++++++
 4 files changed, 64 insertions(+), 3 deletions(-)

       via  2ba29cdc5e8cab4c850cc729e0680dfaab47f8bc (commit)
       via  783b7210d9dada20a2ff96d0599df9f4ff79deb5 (commit)
      from  1a0a6ce3d8292edad71ef10765676d5a8b8e33fc (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.


commit 2ba29cdc5e8cab4c850cc729e0680dfaab47f8bc
Author: Tom Clegg <tom at curii.com>
Date:   Thu Mar 21 11:37:16 2024 -0400

    Merge branch '21603-ec2-subnet-error'
    
    fixes #21603
    
    Arvados-DCO-1.1-Signed-off-by: Tom Clegg <tom at curii.com>

diff --git a/lib/cloud/ec2/ec2.go b/lib/cloud/ec2/ec2.go
index 9a3f784b51..6251f18df0 100644
--- a/lib/cloud/ec2/ec2.go
+++ b/lib/cloud/ec2/ec2.go
@@ -13,6 +13,7 @@ import (
 	"encoding/json"
 	"fmt"
 	"math/big"
+	"regexp"
 	"strconv"
 	"strings"
 	"sync"
@@ -713,6 +714,8 @@ func isErrorQuota(err error) bool {
 	return false
 }
 
+var reSubnetSpecificInvalidParameterMessage = regexp.MustCompile(`(?ms).*( subnet |sufficient free [Ii]pv[46] addresses).*`)
+
 // isErrorSubnetSpecific returns true if the problem encountered by
 // RunInstances might be avoided by trying a different subnet.
 func isErrorSubnetSpecific(err error) bool {
@@ -724,7 +727,12 @@ func isErrorSubnetSpecific(err error) bool {
 	return strings.Contains(code, "Subnet") ||
 		code == "InsufficientInstanceCapacity" ||
 		code == "InsufficientVolumeCapacity" ||
-		code == "Unsupported"
+		code == "Unsupported" ||
+		// See TestIsErrorSubnetSpecific for examples of why
+		// we look for substrings in code/message instead of
+		// only using specific codes here.
+		(strings.Contains(code, "InvalidParameter") &&
+			reSubnetSpecificInvalidParameterMessage.MatchString(aerr.Message()))
 }
 
 // isErrorCapacity returns true if the error indicates lack of
diff --git a/lib/cloud/ec2/ec2_test.go b/lib/cloud/ec2/ec2_test.go
index d342f0fb30..5e6cf2c82b 100644
--- a/lib/cloud/ec2/ec2_test.go
+++ b/lib/cloud/ec2/ec2_test.go
@@ -363,6 +363,57 @@ func (*EC2InstanceSetSuite) TestCreateFailoverSecondSubnet(c *check.C) {
 		`.*`)
 }
 
+func (*EC2InstanceSetSuite) TestIsErrorSubnetSpecific(c *check.C) {
+	c.Check(isErrorSubnetSpecific(nil), check.Equals, false)
+	c.Check(isErrorSubnetSpecific(errors.New("misc error")), check.Equals, false)
+
+	c.Check(isErrorSubnetSpecific(&ec2stubError{
+		code: "InsufficientInstanceCapacity",
+	}), check.Equals, true)
+
+	c.Check(isErrorSubnetSpecific(&ec2stubError{
+		code: "InsufficientVolumeCapacity",
+	}), check.Equals, true)
+
+	c.Check(isErrorSubnetSpecific(&ec2stubError{
+		code:    "InsufficientFreeAddressesInSubnet",
+		message: "Not enough free addresses in subnet subnet-abcdefg\n\tstatus code: 400, request id: abcdef01-2345-6789-abcd-ef0123456789",
+	}), check.Equals, true)
+
+	// #21603: (Sometimes?) EC2 returns code InvalidParameterValue
+	// even though the code "InsufficientFreeAddressesInSubnet"
+	// seems like it must be meant for exactly this error.
+	c.Check(isErrorSubnetSpecific(&ec2stubError{
+		code:    "InvalidParameterValue",
+		message: "Not enough free addresses in subnet subnet-abcdefg\n\tstatus code: 400, request id: abcdef01-2345-6789-abcd-ef0123456789",
+	}), check.Equals, true)
+
+	// Similarly, AWS docs
+	// (https://repost.aws/knowledge-center/vpc-insufficient-ip-errors)
+	// suggest the following code/message combinations also exist.
+	c.Check(isErrorSubnetSpecific(&ec2stubError{
+		code:    "Client.InvalidParameterValue",
+		message: "There aren't sufficient free Ipv4 addresses or prefixes",
+	}), check.Equals, true)
+	c.Check(isErrorSubnetSpecific(&ec2stubError{
+		code:    "InvalidParameterValue",
+		message: "There aren't sufficient free Ipv4 addresses or prefixes",
+	}), check.Equals, true)
+	// Meanwhile, other AWS docs
+	// (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/errors-overview.html)
+	// suggest Client.InvalidParameterValue is not a real code but
+	// ClientInvalidParameterValue is.
+	c.Check(isErrorSubnetSpecific(&ec2stubError{
+		code:    "ClientInvalidParameterValue",
+		message: "There aren't sufficient free Ipv4 addresses or prefixes",
+	}), check.Equals, true)
+
+	c.Check(isErrorSubnetSpecific(&ec2stubError{
+		code:    "InvalidParameterValue",
+		message: "Some other invalid parameter error",
+	}), check.Equals, false)
+}
+
 func (*EC2InstanceSetSuite) TestCreateAllSubnetsFailing(c *check.C) {
 	if *live != "" {
 		c.Skip("not applicable in live mode")

commit 783b7210d9dada20a2ff96d0599df9f4ff79deb5
Author: Peter Amstutz <peter.amstutz at curii.com>
Date:   Thu Mar 21 11:54:42 2024 -0400

    Also pin dotenv on Debian 10 and CentOS 7
    
    refs #21501
    
    Arvados-DCO-1.1-Signed-off-by: Peter Amstutz <peter.amstutz at curii.com>

diff --git a/build/package-build-dockerfiles/centos7/Dockerfile b/build/package-build-dockerfiles/centos7/Dockerfile
index d78f9507bd..816ad80833 100644
--- a/build/package-build-dockerfiles/centos7/Dockerfile
+++ b/build/package-build-dockerfiles/centos7/Dockerfile
@@ -46,7 +46,8 @@ RUN gpg --import --no-tty /tmp/mpapis.asc && \
     /usr/local/rvm/bin/rvm alias create default ruby-2.7 && \
     echo "gem: --no-document" >> ~/.gemrc && \
     /usr/local/rvm/bin/rvm-exec default gem install bundler --version 2.2.19 && \
-    /usr/local/rvm/bin/rvm-exec default gem install fpm --version 1.10.2
+    /usr/local/rvm/bin/rvm-exec default gem install dotenv --version '~> 2.8' && \
+    /usr/local/rvm/bin/rvm-exec default gem install fpm --version 1.15.1
 
 # Install Bash 4.4.12 // see https://dev.arvados.org/issues/15612
 RUN cd /usr/local/src \
diff --git a/build/package-build-dockerfiles/debian10/Dockerfile b/build/package-build-dockerfiles/debian10/Dockerfile
index 160387415c..3be6792a58 100644
--- a/build/package-build-dockerfiles/debian10/Dockerfile
+++ b/build/package-build-dockerfiles/debian10/Dockerfile
@@ -51,7 +51,8 @@ RUN gpg --import --no-tty /tmp/mpapis.asc && \
     /usr/local/rvm/bin/rvm alias create default ruby-2.7 && \
     echo "gem: --no-document" >> ~/.gemrc && \
     /usr/local/rvm/bin/rvm-exec default gem install bundler --version 2.2.19 && \
-    /usr/local/rvm/bin/rvm-exec default gem install fpm --version 1.10.2
+    /usr/local/rvm/bin/rvm-exec default gem install dotenv --version '~> 2.8' && \
+    /usr/local/rvm/bin/rvm-exec default gem install fpm --version 1.15.1
 
 RUN /usr/local/rvm/bin/rvm-exec default bundle config --global jobs $(let a=$(grep -c processor /proc/cpuinfo )-1; echo $a)
 # Cf. https://build.betterup.com/one-weird-trick-that-will-speed-up-your-bundle-install/

-----------------------------------------------------------------------


hooks/post-receive
-- 




More information about the arvados-commits mailing list