aws / aws/session-manager-plugin

Upgrade/Re-Vendor (or switch) UUID Library

Open
#73 3 comments 17 reactions 0 assignees View on GitHub
Dominant language
Go
Stars
320
Forks
97
PR merge metrics
No merged PRs in 30d

Description

TL;DR; if my go module/project imports https://github.com/aws/session-manager-plugin and I update all my go deps with `go get -u ./...`, the library `github.com/twinj/uuid` (indirect dependency of my project via `github.com/aws/session-manager-plugin`) will upgrade from `v0.0.0-20151029044442-89173bcdda19` (the version used by the ssm plugin lib) to `v1.0.0` which introduces breaking changes (the aws ssm plugin library can't build with that version).

#### Example:

Bumping the version of the uuid library for my project/module (same effect as just running `go get -u ./...`)
```
14:36 $ go get -u github.com/twinj/uuid
go: upgraded github.com/twinj/uuid v0.0.0-20151029044442-89173bcdda19 => v1.0.0
```

Building the binary for my project/module
```
14:36 $ go build -o my_binary
# github.com/aws/session-manager-plugin/src/message
../../../../pkg/mod/github.com/aws/session-manager-plugin@v0.0.0-20230315220744-7b544e9f381d/src/message/messageparser.go:170:10: cannot use nil as uuid.UUID value in return statement
../../../../pkg/mod/github.com/aws/session-manager-plugin@v0.0.0-20230315220744-7b544e9f381d/src/message/messageparser.go:176:10: cannot use nil as uuid.UUID value in return statement
../../../../pkg/mod/github.com/aws/session-manager-plugin@v0.0.0-20230315220744-7b544e9f381d/src/message/messageparser.go:182:10: cannot use nil as uuid.UUID value in return statement
../../../../pkg/mod/github.com/aws/session-manager-plugin@v0.0.0-20230315220744-7b544e9f381d/src/message/messageparser.go:188:10: cannot use nil as uuid.UUID value in return statement
../../../../pkg/mod/github.com/aws/session-manager-plugin@v0.0.0-20230315220744-7b544e9f381d/src/message/messageparser.go:194:10: cannot use nil as uuid.UUID value in return statement
../../../../pkg/mod/github.com/aws/session-manager-plugin@v0.0.0-20230315220744-7b544e9f381d/src/message/messageparser.go:417:14: invalid operation: input == nil (mismatched types uuid.UUID and untyped nil)
../../../../pkg/mod/github.com/aws/session-manager-plugin@v0.0.0-20230315220744-7b544e9f381d/src/message/messageparser.go:497:25: undefined: uuid.CleanHyphen
```

#### The Problem:

This library imports and vendors an old version of github.com/twinj/uuid.

The AWS session manager plugin library is importing and vendoring version `v0.0.0-20151029044442-89173bcdda19` of `github.com/twinj/uuid`.

Running a `go get -u ./...` on a go project that imports the aws session manager plugin (this repo) and its libraries will break the build of that project.

This is because the UUID library introduced a breaking change and the aws ssm plugin library does not use go modules.

This uuid lib is also deprecated... consider using google's uuid library instead https://github.com/google/uuid.

#### The Fix:

- Use go modules

OR

- Re-vendor the uuid library with its latest release

OR

- Use a different UUID library

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.