From 184e939e47216dfb0907b35030e3c12306fb1708 Mon Sep 17 00:00:00 2001 From: brycahta Date: Mon, 15 Aug 2022 16:56:11 -0500 Subject: [PATCH 1/2] fallback to go proxy for go mod download issues --- Makefile | 4 ++-- scripts/build-binaries | 7 +------ scripts/build-docker-images | 7 ++----- test/license-test/run-license-test.sh | 3 ++- 4 files changed, 7 insertions(+), 14 deletions(-) diff --git a/Makefile b/Makefile index 12139b1..6dd1b60 100644 --- a/Makefile +++ b/Makefile @@ -41,7 +41,7 @@ docker-push: docker push ${IMG_W_TAG} build-docker-images: - ${MAKEFILE_PATH}/scripts/build-docker-images -d -p ${SUPPORTED_PLATFORMS} -r ${IMG} -v ${VERSION} + ${MAKEFILE_PATH}/scripts/build-docker-images -p ${SUPPORTED_PLATFORMS} -r ${IMG} -v ${VERSION} push-docker-images: @docker login -u ${DOCKERHUB_USERNAME} -p="${DOCKERHUB_TOKEN}" @@ -74,7 +74,7 @@ readme-codeblock-test: build-binaries: - ${MAKEFILE_PATH}/scripts/build-binaries -d -p ${SUPPORTED_PLATFORMS} -v ${VERSION} + ${MAKEFILE_PATH}/scripts/build-binaries -p ${SUPPORTED_PLATFORMS} -v ${VERSION} ## requires a github token upload-resources-to-github: diff --git a/scripts/build-binaries b/scripts/build-binaries index 3489177..c7806b6 100755 --- a/scripts/build-binaries +++ b/scripts/build-binaries @@ -10,7 +10,6 @@ mkdir -p "${BIN_DIR}" VERSION=$(make -s -f ${MAKE_FILE_PATH} version) PLATFORMS=("linux/amd64") -PASS_THRU_ARGS="" USAGE=$(cat << 'EOM' Usage: build-binaries [-p ] @@ -19,7 +18,6 @@ USAGE=$(cat << 'EOM' Example: build-binaries -p "linux/amd64,linux/arm" Optional: -p Platform pair list (os/architecture) [DEFAULT: linux/amd64] - -d DIRECT: Set GOPROXY=direct to bypass go proxies -v VERSION: The application version of the docker image [DEFAULT: output of `make version`] EOM ) @@ -30,9 +28,6 @@ while getopts "dp:v:" opt; do p ) # Platform Pairs IFS=',' read -ra PLATFORMS <<< "$OPTARG" ;; - d ) # sets GOPROXY=direct - PASS_THRU_ARGS="$PASS_THRU_ARGS -d" - ;; v ) # Image Version VERSION="$OPTARG" ;; @@ -52,7 +47,7 @@ for os_arch in "${PLATFORMS[@]}"; do bin_name="${base_bin_name}-${os}-${arch}" docker container rm $container_name || : - $SCRIPTPATH/build-docker-images -p $os_arch -v $VERSION -r $repo_name $PASS_THRU_ARGS + $SCRIPTPATH/build-docker-images -p $os_arch -v $VERSION -r $repo_name docker container create --rm --name $container_name "$repo_name:$VERSION-$os-$arch" docker container cp $container_name:/ec2-instance-selector $BIN_DIR/$bin_name diff --git a/scripts/build-docker-images b/scripts/build-docker-images index c159c46..3f3a7fa 100755 --- a/scripts/build-docker-images +++ b/scripts/build-docker-images @@ -8,7 +8,7 @@ MAKE_FILE_PATH=$REPO_ROOT_PATH/Makefile VERSION=$(make -s -f $MAKE_FILE_PATH version) PLATFORMS=("linux/amd64") -GOPROXY="https://proxy.golang.org,direct/" +GOPROXY="direct|https://proxy.golang.org" USAGE=$(cat << 'EOM' @@ -18,7 +18,6 @@ USAGE=$(cat << 'EOM' Example: build-docker-images -p "linux/amd64,linux/arm" Optional: -p Platform pair list (os/architecture) [DEFAULT: linux/amd64] - -d DIRECT: Set GOPROXY=direct to bypass go proxies -r IMAGE REPO: set the docker image repo -v VERSION: The application version of the docker image [DEFAULT: output of `make version`] EOM @@ -30,9 +29,6 @@ while getopts "dp:r:v:" opt; do p ) # Platform Pairs IFS=',' read -ra PLATFORMS <<< "$OPTARG" ;; - d ) # GOPROXY=direct - GOPROXY="direct" - ;; r ) # Image Repo IMAGE_REPO="$OPTARG" ;; @@ -55,6 +51,7 @@ for os_arch in "${PLATFORMS[@]}"; do docker build \ --build-arg GOOS=${os} \ --build-arg GOARCH=${arch} \ + --build-arg GOPROXY=${GOPROXY} \ -t ${img_tag} \ ${REPO_ROOT_PATH} done \ No newline at end of file diff --git a/test/license-test/run-license-test.sh b/test/license-test/run-license-test.sh index 4a8f9d9..c675bd9 100755 --- a/test/license-test/run-license-test.sh +++ b/test/license-test/run-license-test.sh @@ -8,8 +8,9 @@ BUILD_BIN="$BUILD_PATH/bin" BINARY_NAME="ec2-instance-selector-linux-amd64" LICENSE_TEST_TAG="aeis-license-test" LICENSE_REPORT_FILE="$BUILD_PATH/license-report" +GOPROXY="direct|https://proxy.golang.org" SUPPORTED_PLATFORMS_LINUX="linux/amd64" make -s -f $SCRIPTPATH/../../Makefile build-binaries -docker buildx build --load -t $LICENSE_TEST_TAG $SCRIPTPATH/ +docker buildx build --load --build-arg=GOPROXY=${GOPROXY} -t $LICENSE_TEST_TAG $SCRIPTPATH/ docker run -i -e GITHUB_TOKEN --rm -v $SCRIPTPATH/:/test -v $BUILD_BIN/:/aeis-bin $LICENSE_TEST_TAG golicense /test/license-config.hcl /aeis-bin/$BINARY_NAME | tee $LICENSE_REPORT_FILE $SCRIPTPATH/check-licenses.sh $LICENSE_REPORT_FILE From 8869dbf5ffe83612a033233d39e3967f91dd8612 Mon Sep 17 00:00:00 2001 From: hfastek <49168610+hfastek@users.noreply.github.com> Date: Fri, 27 Jan 2023 20:39:33 +0100 Subject: [PATCH 2/2] fix random behaviour in executeFilters (#164) Co-authored-by: Kamil Chwastek --- pkg/selector/selector.go | 32 +++++++++++++++----------------- 1 file changed, 15 insertions(+), 17 deletions(-) diff --git a/pkg/selector/selector.go b/pkg/selector/selector.go index 953932c..9c8eb36 100644 --- a/pkg/selector/selector.go +++ b/pkg/selector/selector.go @@ -367,7 +367,7 @@ func sortInstanceTypeInfo(instanceTypeInfoSlice []*instancetypes.Details) []*ins // executeFilters accepts a mapping of filter name to filter pairs which are iterated through // to determine if the instance type matches the filter values. func (itf Selector) executeFilters(filterToInstanceSpecMapping map[string]filterPair, instanceType string) (bool, error) { - abort := make(chan bool, len(filterToInstanceSpecMapping)) + verdict := make(chan bool, len(filterToInstanceSpecMapping) + 1) errs := make(chan error) ctx, cancel := context.WithCancel(context.Background()) defer cancel() @@ -385,31 +385,29 @@ func (itf Selector) executeFilters(filterToInstanceSpecMapping map[string]filter errs <- err } if !ok { - abort <- true + verdict <- false } } }(ctx, filterName, filter) } - done := make(chan bool) go func() { wg.Wait() - done <- true + verdict <- true }() - select { - case <-abort: - cancel() - var err error - for { - select { - case e := <-errs: - err = multierr.Append(err, e) - default: - return false, err - } - } - case <-done: + + if <-verdict { return true, nil } + cancel() + var err error + for { + select { + case e := <-errs: + err = multierr.Append(err, e) + default: + return false, err + } + } } func exec(instanceType string, filterName string, filter filterPair) (bool, error) {