Skip to content

Latest commit

 

History

History
426 lines (264 loc) · 23 KB

CHANGELOG.adoc

File metadata and controls

426 lines (264 loc) · 23 KB

Spring Cloud GCP Changelog

Spring Cloud GCP is a set of integrations between Spring Framework and Google Cloud Platform. It makes it much easier for Spring framework users to run their applications on Google Cloud Platform.

This document provides a high-level overview of the changes introduced in Spring Cloud GCP by release. For a detailed view of what has changed, refer to the commit history on GitHub.

2.0.2 (2021-03-25)

General

  • Upgraded to Spring Cloud 2020.0.2 and Spring Boot 2.4.4

  • Upgraded to Google Cloud Libraries BOM 19.2.1

  • Added Java 16 support (#391)

  • Various code quality improvements with the help of SonarCloud.

Cloud SQL

  • Disabled CloudSqlEnvironmentPostProcessor in bootstrap context (#273)

    • This enables the use of Secrets Manager property placeholders together with Cloud SQL configuration.

BigQuery

  • Fixed a bug in the BigQueryFileMessageHandler where it referenced the wrong variable in the setter (#270)

Datastore

  • Added storeOnDisk and dataDir configuration properties for Datastore Emulator (#344)

  • Fixed resolution of references and descendants for subclasses (#377)

Firestore

  • Modified Firestore.withParent() to accept String instead of Object (#315)

Logging

  • Fixed the JSON layout logging levels mapping (#314)

Pub/Sub

  • In Cloud Stream Pub/Sub Binder, added support for specifying a custom subscription as a consumer endpoint (#262)

  • Added PubSubAdmin.createSubscription(Subscription.Builder) to allow access to all subscription properties (#343)

  • Added warnings about the use of returnImmediately=true (#354)

  • Added Cloud Stream Dead Letter Topic support (#358)

  • Added support for custom subscription name for Pub/Sub health check (#330)

  • Added support for message ordering when publishing (#408)

    • Introduced spring.cloud.gcp.pubsub.publisher.enable-message-ordering and GcpPubSubHeaders.ORDERING_KEY header

Storage

  • Fixed: PathResourceResolver can’t resolve a GoogleStorageResource due to no Google Storage UrlStreamHandler (#210)

2.0.1 (2021-02-04)

General

  • Upgraded to Spring Cloud 2020.0.1 and Spring Boot 2.4.2 (#233)

  • Multiple code quality improvements with help from SonarCloud

Firestore

  • Fixed: Firestore emulator not using configured project id (#211)

Logging

  • Fixed: Trace ID not populated when using AsyncAppender (#196)

  • Made StackdriverJsonLayout more customizable with support for logging event enhancers (#208)

    • Added an extension for Logstash markers support

Pub/Sub

  • Fixed: Spring Cloud Stream unable to setup subscription to a topic in a different GCP project (#232)

Spanner

  • Fixed session leak with aborted read/write transactions (#251)

2.0.0 (2021-01-06)

General

  • Compatible with Spring Cloud 2020.0.0 (Ilford release train)

  • Package renamed from org.springframework.cloud.gcp to com.google.cloud.spring

  • Maven coordinates now use com.google.cloud as the group ID

  • All deprecated items removed

For a full list, please see the 2.x migration guide.

Cloud SQL

  • Replaced CloudSqlAutoConfiguration with CloudSqlEnvironmentPostProcessor (#131)

Datastore

  • Fixed auditing when running through DatastoreTemplate.performTransaction() (#157)

  • Fixed findAll(example, pageable) ignores @Reference annotated fields (#177)

Firestore

  • Resolved 10 simultaneous writes limitation (#135)

  • Added update time and optimistic locking support (#171)

KMS

  • Added Cloud Key Management Service (KMS) support (#175)

    • Spring Boot starter, sample, and documentation included

Logging

  • Added support for trace with async logging (#197)

Metrics

  • Multiple fixes for the metrics auto-config and sample (#121)

Pub/Sub

  • Addded support for binder customizers (#186)

Secret Manager

  • Changed secret manager module to use v1 instead of v1beta (#173)

Spanner

  • Added support spring.cloud.gcp.project-id property for Spanner Emulator config (#123)

1.2.7 (TBD)

Pub/Sub

  • Fixed Pub/Sub emulator ManagedChannel shutdown (#2583)

1.2.6.RELEASE (2020-11-09)

General

  • Added proxyBeanMethods = false to configuration classes for better GraalVM support (#2525)

  • Updated gcp-libraries-bom.version to 13.4.0 (#2571)

Pub/Sub

  • Differentiate between Publisher and Subscriber TransportChannelProvider (#2520)

    • If you’ve been overwriting the auto-configured transportChannelProvider bean for Pub/Sub, you will need to rename it to {"subscriberTransportChannelProvider", "publisherTransportChannelProvider"}.

  • Better generics for ack operations in PubSubSubscriberOperations (#2539)

    • This a minor breaking change if you have a custom implementation of PubSubSubscriberOperations.

  • Fixed: With MessageHistory enabled, sending a Pub/Sub message and consuming it in a subscription fails due to IllegalArgumentException (#2562)

Cloud SQL

  • Added support for configuring Cloud SQL ipTypes with the spring.cloud.gcp.sql.ip-types property (#2513)

  • Fixed: starter-sql-mysql doesn’t override spring.datasource.url (#2537)

Spanner

  • Added NUMERIC data type support for Spanner (BigDecimal) (#2515)

Firestore

  • Fixed: StructuredQuery.from cannot have more than one collection selector (#2510)

  • Added query methods that return Slice to DatastoreTemplate to allow pagination (#2541)

  • Added support for is not equal and not in filters in method name based queries (#2563)

1.2.5.RELEASE (2020-08-28)

Secret Manager

  • Fixed: Spring GCP Secrets references not working when using Spring Cloud Server (#2483)

  • Fixed: Spring boot error when using google-cloud-secretmanager library without spring-cloud-gcp-starter-secretmanager (#2506)

Pub/Sub

  • Added support for composite actuator contributor for multiple Pub/Sub templates (#2493)

Datastore

  • Added value nullity check to avoid NPE with primitive types (#2505)

1.2.4.RELEASE (2020-07-31)

General

  • Upgraded GCP libraries BOM and other dependencies (#2477)

Metrics

  • New Spring Cloud GCP starter, spring-cloud-gcp-starter-metrics, configures Micrometer Stackdriver to automatically pick up project ID and credentials (thanks to @eddumelendez).

  • Added Metrics Sample App (#2455)

Firebase Security

  • Allow projectId override in Firebase Authentication (#2405)

Spanner

  • Allow Pageable and Sort in method-style (part-tree) queries (#2394)

  • Fixed: NullPointerException when passing the null value for nullable column (#2448)

Secret Manager

  • Added additional operations for managing secret versions with SecretManagerTemplate (thanks to @kioie)

Storage

  • Added the spring.cloud.gcp.storage.project-id autoconfig property (#2440)

  • Additional GCS Spring Integration file filters GcsAcceptModifiedAfterFileListFilter and GcsDiscardRecentModifiedFileListFilter (thanks to @hosainnet)

Datastore

  • Fixed: Unable to exclude indexes on nested properties of embedded entity (#2439)

  • Fixed slice query execution in PartTreeDatastoreQuery (#2452)

  • Fixed null handling for ID in query-by-example (#2471)

Pub/Sub

  • Added maxMessages to PubSubReactiveFactory.poll (#2441)

  • Control sync/async publish in Spring Cloud Stream binder (#2473)

Firestore

  • Add subcollection support for FirestoreTemplate (#2434)

  • Added support for automatic ID generation (#2466)

  • Added FirestoreTemplate reference documentation (#2480)

1.2.3.RELEASE (2020-05-29)

General

  • Upgrade to latest libraries bom and sql socket factory (#2373)

  • Make transaction managers conditional on enabled flag for Spanner and Datastore (#2376)

Logging

Note
As we upgraded to the latest version of google-cloud-logging-logback, we picked up a breaking change where the log entry payload is now written in JSON rather than plain text. So, if you’re reading log entries back from Cloud Logging using LogEntry.getPayload(), make sure to cast the returned payload object to JsonPayload instead of StringPayload.

Secret Manager

Note
This version introduced several breaking changes to Secret Manager property source. Please see the reference documentation for the new way for accessing secrets as properties.
  • Remove the version property in secret manager (#2270)

  • Secret manager template with project (#2283) (#2284)

  • Create protocol for specifying secrets' project and versions (#2302)

  • Add secret manager autoconfigure property (#2363)

Pub/Sub

  • New async pull methods in Pub/Sub Template, as well as fully asynchronous PubSubReactiveFactory.poll() (#2227)

  • Suppress exception in Pub/Sub adapter in AUTO_ACK and MANUAL modes (#2319)

  • Make 403 an allowable Pub/Sub UP status (#2385)

Trace

  • Support Extra Propagation Fields with Trace (#2290)

Spanner

  • Fix @Where with ORDER BY query generation (#2267)

  • Add SpannerOptions auto-configuration for emulator (#2356)

Datastore

  • Support for nested properties in PartTree methods (#2307)

  • Datastore Projections should restrict query to contain only the necessary fields (#2335)

  • Support custom maps (#2345)

Firestore

  • Firestore nested properties (#2300)

  • Add autoconfiguration for Firestore Emulator (#2244)

  • Add support for Firestore Sort PartTree queries (#2341)

  • Add child collection to the entity class in Firestore sample (#2388)

Vision

  • Allow users to provide the ImageContext in CloudVisionTemplate (#2286)

Firebase Security

  • Make Firebase Security Autoconfiguration conditional (#2258) Thank you to the contributors from our user community: @eddumelendez, @mzeijen, @s13o, @acet, @guillaumeblaquiere

1.2.2.RELEASE (2020-03-04)

General

  • Switched to using GCP Libraries BOM for managing GCP library versions (#2109)

  • Core auto-configuration can now be disabled with spring.cloud.gcp.core.enabled=false (#2147)

  • Reference documentation improvements

  • Two new modules: Firebase Auth and Secret Manager

Datastore

  • Support lazy loading entities using @LazyReference (#2104)

  • Made existsById more efficient by retrieving only the key field (#2127)

  • Projections now work with the Slice return type (#2133) and GQL queries (#2139) in repositories

  • Improved repository method name validation (#2155)

  • Fixed delete for void repository method return type (#2169)

Firebase (NEW)

  • Introduced Firebase Authentication module (#2111)

Firestore

  • Added IN support in name-based queries (#2054)

Pub/Sub

  • ACK_MODE is now configurable using stream binders (#2079)

  • Added HealthIndicator implementation (#2030)

  • Fixed: PubSubReactiveFactory.poll doesn’t handle exceptions thrown by the PubSubSubscriberOperations (#2229)

    • NOTE: previously silently ignored exceptions are now forwarded to the Flux

Secret Manager (NEW)

  • Bootstrap Property Source which loads secrets from Secret Manager to be accessible as environment properties to your application (#2168)

  • SecretManagerTemplate implementation (#2195)

  • New Secret Manager sample app (#2190)

Spanner

  • Fixed java.util.Date conversion and added LocalDate and LocalDateTime support (#2067)

  • Added support for non-Key ID types in Spring Data REST repositories (#2049)

  • Optimized eager loading for interleaved properties (#2110) (#2165)

  • Enable using PENDING_COMMIT_TIMESTAMP in Spring Data Spanner (#2203)

Storage

  • Added ability to provide initial file contents on blob creation (#2097)

  • You can now use a comparator with GcsStreamingMessageSource to process blobs from Cloud Storage in an ordered manner. (#2117)

  • Fixed GCS emulator BlobInfo update time initialization (#2113)

Trace

  • Hid trace scheduler from Spring Sleuth (#2158)

1.2.1.RELEASE (2019-12-20)

Spanner

  • Fixed java.sql.Timestamp to com.google.cloud.Timestamp conversion (#2064)

Pub/Sub

  • Fixed AUTO_ACK acking behavior in PubSubInboundChannelAdapter (#2075)

1.2.0.RELEASE (2019-11-26)

BigQuery

  • New module

  • Autoconfiguration for the BigQuery client objects with credentials needed to interface with BigQuery

  • A Spring Integration message handler for loading data into BigQuery tables in your Spring integration pipelines

Cloud Foundry

  • Created a separate starter for Cloud Foundry: spring-cloud-gcp-starter-cloudfoundry

Datastore

  • Datastore emulator support and auto-configuration

  • Entity Inheritance Hierarchies support

  • Query by example

  • Support Pagination for @Query annotated methods

  • Support key fields in name-based query methods

  • Events and Auditing support

  • Support for multiple namespaces

  • Spring Boot Actuator Support for Datastore Health Indicator (#1423)

Firestore

  • Spring Data Reactive Repositories for Cloud Firestore

  • Cloud Firestore Spring Boot Starter

Logging

  • Additional metadata support for JSON logging (#1310)

  • Add service context for Stackdriver Error Reporting

  • Add option to add custom json to log messages

  • A separate module for Logging outside of autoconfiguration (#1455)

Pub/Sub

  • PubsubTemplate publish to topics in other projects (#1678)

  • PubsubTemplate subscribe in other projects (#1880)

  • Reactive support for Pub/Sub subscription (#1461)

  • Spring Integration - Pollable Message Source (using Pub/Sub Synchronous Pull) (#1321)

  • Pubsub stream binder via synchronous pull (#1419)

  • Add keepalive property to pubsub; set default at 5 minutes (#1807)

  • Change thread pools to create daemon threads that do not prevent JVM shutdown (#2010)

    • This is a change in behavior for non-web applications that subscribe to a Cloud Pub/Sub topic. The subscription threads used to keep the application alive, but will now allow the application to shut down if no other work needs to be done.

  • Added original message to the throwable for Pub/Sub publish failures (#2020)

IAP

  • Added support to allow multiple IAP audience claims (#1856)

Spanner

  • Expose Spanner failIfPoolExhausted property (#1889)

  • Lazy fetch support for interleaved collections (#1460)

  • Bounded staleness option support (#1727)

  • Spring Data Spanner Repositories In clause queries support (#1701)

  • Spanner array param binding

  • Events and Auditing support

  • Multi-Instance support (#1530)

  • Fixed conversion for timestamps older than unix epoch (#2043)

  • Fixed REST Repositories PUT by populating key fields when virtual key property is set (#2053)

Spring Cloud Bus

  • Spring Cloud Config and Bus over Pub/Sub sample/docs (#1550)

Vision

  • Cloud Vision Document OCR support

1.1.0.RELEASE (2019-01-22)

1.0.0.RELEASE (2018-09-18)