Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Version bumps BT-332 #6456

Merged
merged 35 commits into from
Aug 31, 2021
Merged

Version bumps BT-332 #6456

merged 35 commits into from
Aug 31, 2021

Conversation

kshakir
Copy link
Contributor

@kshakir kshakir commented Jul 25, 2021

No description provided.

kshakir added 19 commits May 2, 2021 19:43
- Wait longer for containers to download and startup
- Use the latest PostgreSQL jdbc driver
- Updated liquibase and schema comparison tests
- Empty LOBs are always stored as null
- Fixed test description for empty lobs
- Test the various databases with centaur local
- Don't start a db when CI checking publishing
- Help liquibase by using valid location of S3FSP
- Longer leeway for logging events for longer liquibase
- sbt 1.5.3
- sbt-assembly 1.0.0
- more assembly merging workarounds
- disabled test log buffering
- removed some intellij warnings and false-errors
- only set dockerCustomSettings when required
- updated scala-collection-compat
- removed obsolete merging exclusions
- removed intellij warnings from Dependencies.scala
@kshakir kshakir force-pushed the ks_version_bumps branch from ecdccd7 to 2856d87 Compare July 26, 2021 03:53
@cjllanwarne
Copy link
Contributor

Just OOO, is this mostly complementary, orthogonal, or replacing-of, the scala steward update PRs?

@kshakir
Copy link
Contributor Author

kshakir commented Aug 14, 2021

Just OOO, is this mostly complementary, orthogonal, or replacing-of, the scala steward update PRs?

I haven't gone through the various other PRs yet to see what they're fixing or not. Over weekends I've been experimenting with updating various subsystems I'm already familiar with and seeing if Travis likes the changes. If I had to guess, there's probably a bit of overlap with the version bumps here and the scala steward PRs.

Things done here, and may or may not have been addressed in the stewarded PRs:

  • Some non-semver versions have been updated/fixed. Does scala steward do date comparisons or only semver? (ex: nl.grons.metrics(3), apache commons, workbench-libs, etc.)
  • Some intermediate version fixes have been applied. The versions listed in develop will be out of date, while the absolute latest available version may not be compatible (ex: cats-effect, fs2, http4s, etc.)
  • Some SDKs had a few deprecated functions and required a little RTFMing 📖 (ex: sentry)

Btw, as it's not a blocker (yet) some weekend I or someone else will have to dive into statsd and deal with those libs plus whatever our bespoke statsd-proxy is doing... 🤔

@kshakir kshakir marked this pull request as ready for review August 30, 2021 20:32
@kshakir kshakir requested review from mcovarr and breilly2 August 30, 2021 20:32
Copy link
Contributor

@mcovarr mcovarr left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍 assuming Jenkins is okay with the AWS changes

- >-
BUILD_TYPE=centaurPapiUpgradePapiV2alpha1
BUILD_MYSQL=5.7
- >-
BUILD_TYPE=centaurPapiUpgradeNewWorkflowsPapiV2alpha1
BUILD_MYSQL=5.7
- >-
BUILD_TYPE=centaurLocal
BUILD_MARIADB=10.3
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

2 horicromtal papis for a local seems like a deal

@@ -0,0 +1,2 @@
# Quiet warnings about missing sentry DSNs by providing an empty string
dsn=
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🏆

// It's possible that after updating all other dependencies in Cromwell we might purge the transitive dependencies on
// javax.activation and then be able to upgrade to jaxb-impl 2.3.3 or beyond, but some of those other dependencies
// such as googleCloudNioV have already been pinned for Scala Steward so this might not be a trivial undertaking.
private val jaxbV = "2.3.2" // scala-steward:off
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🥳

private val MariadbColumnMapping =
ColumnMapping(
typeMapping = Map(
HsqldbTypeBigInt -> ColumnType("BIGINT"),
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

these key names look kind of surprising given this is a Mariadb map...

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The keys in the map are what HSQLDB calls the column. The values are what the other RDBMS calls the column. In this case MariaDB.

The way the matching works, at the start of the test an HSQLDB schema is created with Slick instead of Liquibase. Then one by one each RDBMS type is initialized, liquibased, and then the resulting schema is compared to the HSQLDB-Slick schema. Any mismatches in column type are an error. Except sometimes there are minor differences.

In this line HSQLDB has columns that are ColumnType("BIGINT", Option(64)) while MariaDB doesn't return sizes for "BIGINT" so its equivalent column type is a CoulmnType("BIGINT", None).

private val apacheHttpClientV = "4.5.13"
private val awsSdkV = "2.15.41" // scala-steward:off (CROM-6776)
private val awsSdkV = "2.17.29"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

kicked off AWS build 104 to get Jenkins' opinion before merge

// latest date via: https://mvnrepository.com/artifact/com.google.apis/google-api-services-cloudkms
private val googleCloudKmsV = "v1-rev20210812-1.32.1"
private val googleCloudMonitoringV = "3.0.2"
private val googleCloudNioV = "0.123.8"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Comment on lines +59 to +60
// latest date via: https://mvnrepository.com/artifact/com.google.apis/google-api-services-lifesciences
private val googleLifeSciencesServicesV2BetaApiV = "v2beta-rev20210813-1.32.1"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤷

// It's possible that after updating all other dependencies in Cromwell we might purge the transitive dependencies on
// javax.activation and then be able to upgrade to jaxb-impl 2.3.3 or beyond, but some of those other dependencies
// such as googleCloudNioV have already been pinned for Scala Steward so this might not be a trivial undertaking.
private val jaxbV = "2.3.2" // scala-steward:off
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If this all works, I love getting rid of pinned versions like this.

private val owlApiV = "5.1.16" // scala-steward:off (CROM-6677)
private val mockserverNettyV = "5.11.2"
private val mouseV = "1.0.4"
private val mysqlV = "8.0.26"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Character encodings, like date-times, are definitely something to keep an eye out for.

In general anyone not using UTC time and 7-bit ASCII may run into issues 😦

That said, we generally hope that any egregious encoding bugs are caught in centaur. For the curious, bugs in the past have popped up when validating and storing values of length "255" in our liquibased tables. What unit is that: bytes, characters, encoded characters in bytes?? If my memory is correct, the issues manifested as strings suddenly being too long to store in some of the tables.

private val refinedV = "0.9.22"
private val postgresV = "42.2.23"
private val pprintV = "0.6.6"
private val rdf4jV = "3.7.1"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ugh. Their link to the "release and upgrade notes" (https://rdf4j.org/release-notes#3-0-0) for 3.0.0 doesn't go to a useful place anymore so I don't know what to look for. I also don't know what RDF is or how we might use it.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

private val scoptV = "4.0.1"
private val sentryLogbackV = "1.7.30" // scala-steward:off (CROM-6640)
private val shapelessV = "2.3.3"
private val sentryLogbackV = "5.1.2"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This feels like a huge jump and I wouldn't even know where to start, so... just saying that I'm leaving this one alone and assuming that any problems would be caught by compilation, tests, or general operations.

private val snakeyamlV = "1.28"
private val specs2MockV = "4.10.6"
private val snakeyamlV = "1.29"
private val specs2MockV = "4.12.3"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I care about this, but I cannot find any reliable documentation links about specs2-mock or any version history. I hope they didn't change anything that will cause any of our tests to pass when they should fail.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I care too. The reason it's hard to find docs on specs2-mock is that it seems to be End Of Life. See the cromwell sibling PR that kills this dependency off 😉🔪💀

As for some sort of docs:

Comment on lines -136 to -137
private val workbenchModelV = "0.14-27810079-SNAP"
private val workbenchUtilV = "0.6-27810079-SNAP"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

-SNAP ⁉️ 😬

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Desperate times... (and not waiting for releases) 🤷

@@ -57,7 +57,10 @@ case class OssBatchDeleteCommand(
override val file: OssPath,
override val swallowIOExceptions: Boolean
) extends IoDeleteCommand(file, swallowIOExceptions) with OssBatchIoCommand[Unit, Void] {
def operation: Unit = file.ossClient.deleteObject(file.bucket, file.key)
def operation: Unit = {
file.ossClient.deleteObject(file.bucket, file.key)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Does this not return void anymore? Should we be paying attention to what it does return?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should we be paying attention to what it does return?

No. It returns a VoidResult: https://github.com/aliyun/aliyun-oss-java-sdk/blob/3.13.1/src/main/java/com/aliyun/oss/OSSClient.java#L665

@@ -98,6 +98,7 @@ trait OssNioUtilSpec extends AnyFlatSpecLike with CromwellTimeoutSpec with Mocki
OssStorageRetry.from(
() => ossClient.deleteObject(path.bucket, path.key)
)
()
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same question as in OssBatchIoCommand.scala above.

@@ -27,7 +27,7 @@ import scala.concurrent.{Await, Promise}
class WorkflowExecutionActorSpec extends CromwellTestKitSpec with AnyFlatSpecLike with Matchers with BeforeAndAfter with WorkflowDescriptorBuilderForSpecs {

override implicit val actorSystem = system
implicit val DefaultDuration = 20.seconds.dilated
implicit val DefaultDuration = 60.seconds.dilated
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why this change?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This spec, like others, effectively runs its own entire Cromwell instance. When run on Travis it sometimes takes longer than 20 seconds for the lazy-loaded in-memory DB to start up, especially when other tests don't clean 100% clean up leading to GC pauses etc.

See the comment "Yes, this might be slow..." further down below in this file for more slightly more context.

@@ -35,7 +35,7 @@ class LobSpec extends AnyFlatSpec with CromwellTimeoutSpec with Matchers with Sc
containerOpt.foreach { _.start }
}

it should "fail to store and retrieve empty blobs" taggedAs DbmsTest in {
it should "store empty blobs" taggedAs DbmsTest in {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Was this just always incorrectly named?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not "always". At some point the body of the test was updated and the name of the test wasn't.

Copy link
Contributor

@breilly2 breilly2 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good, as far as I can tell. I've done what I can to validate version bumps, and I'm trusting that the code changes are largely fallout from that. I also don't know the newer sbt stuff, so I'm trusting that that's all correct. Definitely glad there are other eyes on reviewing this.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants