Major Additions
Java 17 Upgrade
The aiSSEMBLE project is now built with Java 17. All dependencies inherited from aiSSEMBLE have been updated to a Java 17 compatible version and automatic migrations (detailed below) have been created to streamline this transition for downstream projects. It is recommended to review non-inherited dependencies and custom logic within your project, as this upgrade can break existing functionality due to deprecated classes and incompatible dependencies.
Python Version Supported Expanded
All aiSSEMBLE python libraries now support a minimum version of 3.8 (previously 3.11).
Improved Licence Generation
Leveraging a new version of Booz Allen Licenses. Booz Allen projects may find some minor updates to header file text that better conforms to some strict linting standards.
Breaking Changes
Note: instructions for adapting to these changes are outlined in the upgrade instructions below.
- All projects must be built with Java 17. The aiSSEMBLE team recommends SDKMan for managing multiple Java versions.
- The new minimum required Maven version is now
3.9.6
to ensure compatibility with Java 17. The aiSSEMBLE team recommens using the Maven Wrapper to ensure compatibility. - Deprecated features were removed:
- All SageMaker modules and corresponding references were removed in commit 8ce393f.
- The Service Discovery module and corresponding references were removed in commit d10db5d.
- The
data.lineage.namespace
legacy property was removed. For more guidance, please refer to the Lineage Metadata documentation.
Known Issues
- There is an issue with package dependencies within a SparkApplication yaml (
sparkApp.spec.deps.packages
) not being correctly saved to the ivy cache directory resulting in ajava.io.FileNotFoundException
when running starting your application. To resolve this, move the dependencies from packages to jars within the SparkApplication yaml (sparkApp.spec.deps.packages
➡️sparkApp.spec.deps.jars
).
Known Vulnerabilities
Date identified |
Vulnerability | Severity | Package | Affected versions |
CVE | Fixed in |
---|
How to Upgrade
Warning
The upgrade process is a little different for this release to support the Java 17 updates. Specifically, the finalization
section has a few more steps.
The following steps will upgrade your project to 1.10
. These instructions consist of multiple phases:
- Automatic Upgrades - no manual action required
- Precondition Steps - needed in all situations
- Conditional Steps (e.g., Python steps, Java steps, if you use Metadata, etc)
- Final Steps - needed in all situations
Automatic Upgrades
To reduce burden of upgrading aiSSEMBLE, the Baton project is used to automate the migration of some files to the new version. These migrations run automatically when you build your project, and are included by default when you update the build-parent
version in your root POM. Below is a description of all of the Baton migrations that are included with this version of aiSSEMBLE.
Migration Name | Description |
---|---|
upgrade-tiltfile-aissemble-version-migration | Updates the aiSSEMBLE version within your project's Tiltfile |
upgrade-v2-chart-files-aissemble-version-migration | Updates the Helm chart dependencies within your project's deployment resources (<YOUR_PROJECT>-deploy/src/main/resources/apps/ ) to use the latest version of the aiSSEMBLE |
upgrade-v1-chart-files-aissemble-version-migration | Updates the docker image tags within your project's deployment resources (<YOUR_PROJECT>-deploy/src/main/resources/apps/ ) to use the latest version of the aiSSEMBLE |
spark-version-upgrade-migration | Updates the Spark Application executor failure parameters to their new key name to ensure compatibility with Apache Spark 3.5 |
spark-pipeline-messaging-pom-migration | Updates a Spark pipeline module pom.xml with the new CDI classes dependency to ensure messaging compatibility with Java 17 |
spark-pipeline-messaging-cdi-factory-migration | Updates a Spark pipeline module CdiContainerFactory.java with the new CDI classes to ensure messaging compatibility with Java 17 |
spark-pipeline-servlet-api-migration | Updates a Spark pipeline module pom.xml with the javax.servlet-api dependency to ensure compatibility with Apache Spark 3.5 which has not migrated to Jakarta packages yet |
it-infrastructure-java-upgrade-migration | Updates the Java docker image version in the integration test docker module to JDK 17 |
log4j-maven-shade-plugin-migration | Updates the Maven Shade Plugin with the new Log4j dependency information |
quarkus-bom-migration | Updates all references to the quarkus-bom and quarkus-universe-bom to use the new aissemble-quarkus-bom for managing Quarkus dependencies |
pom-dependency-version-migration | Updates the pom dependencies previously managed by the aiSSEMBLE bom-component to include their necessary versions |
java-package-migration | Updates the affected java classes from their old package name to their new package name to ensure compatibility with the updated Java 17 dependencies. This migration primarily updates javax.* packages to their new jakarta.* packages |
alerting-cdi-migration | Adds AlertingCdiContext to CdiContainerFactory.getContexts for data delivery pipelines that depend on foundation-alerting |
To deactivate any of these migrations, add the following configuration to the baton-maven-plugin
within your root pom.xml
:
<plugin>
<groupId>org.technologybrewery.baton</groupId>
<artifactId>baton-maven-plugin</artifactId>
<dependencies>
<dependency>
<groupId>com.boozallen.aissemble</groupId>
<artifactId>foundation-upgrade</artifactId>
<version>${version.aissemble}</version>
</dependency>
</dependencies>
+ <configuration>
+ <deactivateMigrations>
+ <deactivateMigration>NAME_OF_MIGRATION</deactivateMigration>
+ <deactivateMigration>NAME_OF_MIGRATION</deactivateMigration>
+ </deactivateMigrations>
+ </configuration>
</plugin>
Precondition Steps - Required for All Projects
Beginning the Upgrade
To start your aiSSEMBLE upgrade, update your project's pom.xml to use the 1.10.0 version of the build-parent:
<parent>
<groupId>com.boozallen.aissemble</groupId>
<artifactId>build-parent</artifactId>
<version>1.10.0</version>
</parent>
BOM Component Replacement
All references to the com.boozallen.aissemble:bom-component
should be replaced with the new com.boozallen.aissemble:aissemble-quarkus-bom
:
<dependency>
<groupId>com.boozallen.aissemble</groupId>
- <artifactId>bom-component</artifactId>
+ <artifactId>aissemble-quarkus-bom</artifactId>
<version>${version.aissemble}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
Conditional Steps
For projects created before version 1.7.0
Older projects were not generated with a Maven Wrapper configuration by default. To ease Maven version management and ensure consistent builds across environments, the aiSSEMBLE team recommends using a wrapper. Simply create a .mvn/wrapper
directory and place a aiSSEMBLE-compatible maven-wrapper.properties inside (see below). Then run mvn wrapper:wrapper
to generate the two mvnw
executables. This Maven wrapper should be used over the system-wide Maven for all operations.
distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.9.6/apache-maven-3.9.6-bin.zip
wrapperUrl=https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.3.2/maven-wrapper-3.3.2.jar
For projects that have customized the Spark Operator Service Account permissions
The service account for the pipeline invocation service is now separated from spark operator and configured solely for the service.
If you added any custom configurations to the sparkoperator
service account pertaining to the pipeline invocation service, you will need to migrate the related changes to the new pipeline-invocation-service-sa
. Refer to Pipeline Invocation Helm Chart README for detail.
Final Steps - Required for All Projects
Finalizing the Upgrade
- Ensure you are using Java 17 for Maven. (Run
mvn -v
to check.) - Run
./mvnw org.technologybrewery.baton:baton-maven-plugin:baton-migrate
to apply the automatic migrations - Remove the
com.boozallen.aissemble:aissemble-quarkus-bom:${version.aissemble}
dependency from the rootpom.xml
and<YOUR_PROJECT>-tests/<YOUR_PROJECT>-tests-java/pom.xml
of your project- NOTE: Any Quarkus apps within your project should be updated to include the
com.boozallen.aissemble:aissemble-quarkus-bom:${version.aissemble}
within the<dependencyManagement>
section of their respectivepom.xml
instead
- NOTE: Any Quarkus apps within your project should be updated to include the
- Run
./mvnw clean install
and resolve any manual actions that are suggested- NOTE: This will update any aiSSEMBLE dependencies in 'pyproject.toml' files automatically
- Repeat the previous step until all manual actions are resolved
What's Changed
- [#353] update to next dev version by @ewilkins-csi in #368
- #366 Feature: Update pyproject.toml files to set min Python version to >=3.8 by @meliz19 in #371
- #365: Resolve Dependabot Alerts in antora-aissemble-ui Module by @habibimoiz in #374
- [#370] only show Tilt notification if not config-store by @ewilkins-csi in #376
- [#366] fix data record python version by @ewilkins-csi in #377
- #152 Records with the same package as a data pipeline cannot be used as inbound/outbound types by @jaebchoi in #378
- 331 dockerhub rate limit - Resolve 429 Too Many Requests Error by @colinpalmer-pro in #381
- Java 17 upgrade by @ewilkins-csi in #369
- #364 Update universal configuration store to use Java 17 by @carter-cundiff in #385
- #384 Schedule build workflow to execute nightly by @cwoods-cpointe in #388
- #363 Update semantic data to use java 17 by @csun-cpointe in #386
- #363 module fix mda plugin build issue by @csun-cpointe in #392
- #363 fix the mda module build issue by adding the missing dependencies by @csun-cpointe in #393
- #363 fix the spark-application build issue by @csun-cpointe in #396
- #379 Add unit tests to check pyproject.toml velocity template Python … by @meliz19 in #387
- #96 support node affinities and tolerations in spark history v2 by @jaebchoi in #394
- 399-dockerhub-rate-limit - update habuhsu generated code to include registry in image names by @colinpalmer-pro in #401
- #400 overwrite ivy user directory in aissemble-spark-application-chart by @csun-cpointe in #402
- #302 imagePullSecrets support to Policy Decision Point chart by @jaebchoi in #405
- #395 Upgrade IT infrastructure for JDK 17 by @cwoods-cpointe in #404
- #391 Update pipeline step messaging to be compatible with Java 17 by @carter-cundiff in #407
- [#391] add kafka dependency to test projects by @ewilkins-csi in #411
- #379 Investigate slow nightly CI build time & improve it by @meliz19 in #410
- #408 Adjust readme for setting up new spark-infrastructure helm chart to account changes for all locally used values helm files by @cpointe-ibllanos in #409
- [#398] update Delta Lake dependencies to 3.2.1 by @ewilkins-csi in #412
- #406 - Modified Jenkins images to use JDK 17 by @jacksondelametter in #413
- #403 pipeline-invocation-service java17 upgrade by @csun-cpointe in #416
- #359 - Modified aissemble-alerting-slack tests to run by @jacksondelametter in #418
- #415 Ensure data access is compatible with JDK17 by @cwoods-cpointe in #417
- #351 Update metadata to be compatible with Java 17 by @carter-cundiff in #424
- 423 remove service discovery by @jacksondelametter in #425
- #426 - Cleaned up drift detection modules pom files and verifies it w… by @jacksondelametter in #427
- #421 data/model lineage java17 upgrade by @csun-cpointe in #428
- [#419] port patch changes to dev by @ewilkins-csi in #433
- [#419] fix invalid ArgoCD templates by @ewilkins-csi in #437
- #414 - JDK 17 Upgrade Support Series - Filestore & Pipeline model config by @habibimoiz in #435
- #4. Fix Cyclic test in test mda models by @jaebchoi in #438
- [#4] switch from docker compose to testcontainers by @ewilkins-csi in #439
- [#429] add docker cache to build workflow by @ewilkins-csi in #440
- [#442] account for lists in
YamlUtils#loadYaml
by @ewilkins-csi in #443 - #441 set default py4j jar path for python messaging client by @csun-cpointe in #445
- #430 FIx data delivery steps not injecting smallrye when running test-data-delivery-spark-model by @jaebchoi in #446
- #434 Create baton migration for Quarkus Java 17 upgrade by @carter-cundiff in #448
- #449 data/model lineage legacy namespace cleanup by @csun-cpointe in #450
- [#451] remove bom-component by @ewilkins-csi in #453
- #452 ⬆️ upgrade booz-allen-licenses dependency by @d-ryan-ashcraft in #454
- [#373] use .Chart.AppVersion for image tags in custom charts by @ewilkins-csi in #455
- [#373] fix chart deployment by @ewilkins-csi in #456
- [#457] fix record messaging by @ewilkins-csi in #459
- [#457] fix syntax error in archetype test by @ewilkins-csi in #460
- [#461] use runs-on/cache to write GH caches to S3 by @ewilkins-csi in #462
- [#467] document self-hosted runner setup by @ewilkins-csi in #468
- #447 Generate aggregated Cucumber report by @habibimoiz in #466
- [#469] fix breaking bugs before release by @ewilkins-csi in #473
- [#469] fix encryption ITs for changed MDA model by @ewilkins-csi in #476
- #422 BUG: Pyspark pipeline generates duplicated data records under pipeline with combine records by @jaebchoi in #472
Full Changelog: aissemble-root-1.9.0...aissemble-root-1.10.0