This is an automated email from the ASF dual-hosted git repository.

He-Pin pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/pekko.git


The following commit(s) were added to refs/heads/main by this push:
     new c07a5476af docs: list configuration changes in the 1.x to 2.x 
migration guide (#3513)
c07a5476af is described below

commit c07a5476af9ea0fb1fb3db6254c63232ab2b94a4
Author: PJ Fanning <[email protected]>
AuthorDate: Fri Oct 9 05:53:48 2026 +0100

    docs: list configuration changes in the 1.x to 2.x migration guide (#3513)
    
    * docs: list configuration changes in the 1.x to 2.x migration guide
    
    Motivation:
    The 1.x to 2.x migration guide did not mention the reference.conf
    changes between the 1.7.x and main branches, so users had no single
    place to review new settings and changed defaults.
    
    Modification:
    Add a Configuration Changes section to migration-guide-1.x-2.x.md
    covering changed default values, changed behavior, removed settings
    and new settings, grouped by module, with links to the originating PRs
    and to the default configuration reference. Settings also backported
    to 1.x note the Pekko version they first appeared in.
    
    Result:
    Users migrating from Pekko 1.x to 2.x can review the configuration
    changes in one place.
    
    Tests:
    - Not run - docs only
    
    References:
    None - sourced from diffing reference.conf files between 1.7.x and main,
    and between the v1.5.0, v1.6.0, v1.7.0 and v1.7.1 tags to find settings
    backported to 1.x
    
    * docs: describe rolling updates from Pekko 1.x to 2.x
    
    Motivation:
    The Rolling Updates and Versions page only covers patch-to-patch
    updates and says nothing about upgrading a cluster from Pekko 1.x to
    2.x. The TCP magic header section also says that a direct rolling
    upgrade from Pekko 1.6.x or earlier to 2.x works with the defaults,
    but 2.x sends "PEKK" on outbound connections
    (ArteryTcpTransport/TcpFraming) and 1.6.x and earlier only accept
    "AKKA", so connections from 2.x nodes to those nodes are rejected.
    
    Modification:
    - project/rolling-update.md: add an "Upgrading from Pekko 1.x to 2.x"
      section that points to the migration guide and says to upgrade to
      the latest 1.7.x first, then to 2.x
    - additional/rolling-updates.md: correct the TCP magic header section;
      a direct upgrade from 1.6.x or earlier needs
      tcp-magic = ["AKKA", "PEKK"] on the 2.x nodes until all nodes run 2.x
    
    Result:
    Users planning a 1.x to 2.x rolling update know the path to follow.
    
    Tests:
    - Not run - docs only
    
    References:
    None - found during a review of the docs
    
    * docs: correct and extend the 1.x to 2.x migration guide config changes
    
    Motivation:
    Review of the configuration changes section found a wrong PR link, an
    imprecise description of the new minimum-runnable default, removed
    settings without PR links, and no mention of serialization binding
    changes that matter for rolling updates.
    
    Modification:
    - minimum-runnable: -1 only changes the effective value on JDK 25 and
      later; on earlier JDKs it is 1
    - sharded-daemon-process keep-alive settings come from #2734, not #2755
    - add PR links for the removed settings (#1969, #3026, #2127)
    - add a Serialization bindings section: ByteString2 is wire compatible
      (no manifest), typed-sharding serializer now also handles new
      Sharded Daemon Process messages that 1.x cannot read, and the new
      FilteredPayload serializer (id 34) cannot be read by 1.x
    
    Result:
    The configuration changes section is accurate and covers the
    serialization changes that affect rolling updates and rollbacks.
    
    Tests:
    - Not run - docs only
    
    References:
    None - checked against reference.conf, ShardingSerializer,
    ByteStringSerializer and FilteredPayload on main and 1.7.x
---
 .../src/main/paradox/additional/rolling-updates.md |   7 +-
 .../paradox/migration/migration-guide-1.x-2.x.md   | 165 +++++++++++++++++++++
 docs/src/main/paradox/project/rolling-update.md    |  17 ++-
 3 files changed, 186 insertions(+), 3 deletions(-)

diff --git a/docs/src/main/paradox/additional/rolling-updates.md 
b/docs/src/main/paradox/additional/rolling-updates.md
index 2cf4a643f6..77df7ebd68 100644
--- a/docs/src/main/paradox/additional/rolling-updates.md
+++ b/docs/src/main/paradox/additional/rolling-updates.md
@@ -159,8 +159,11 @@ The magic header has evolved across versions:
  * Pekko 2.x (and above) sends `"PEKK"` by default but accepts both `"PEKK"` 
and `"AKKA"`.
 
 Because Pekko 1.7.x+ and 2.x accept both values by default, rolling upgrades 
between these versions
-do not require changing the `tcp-magic` configuration. Upgrading from Pekko 
1.6.x or earlier to 2.x
-directly is also supported since the 2.x default accepts `"AKKA"`.
+do not require changing the `tcp-magic` configuration.
+
+Pekko 1.6.x and earlier reject the `"PEKK"` header that Pekko 2.x sends by 
default. Upgrade to Pekko 1.7.x
+first, or, if you upgrade from Pekko 1.6.x or earlier directly to 2.x, set
+`pekko.remote.artery.advanced.tcp-magic = ["AKKA", "PEKK"]` on the 2.x nodes 
until all nodes run 2.x.
 
 If you remove `"AKKA"` from the array, nodes running older versions will be 
unable to connect.
 
diff --git a/docs/src/main/paradox/migration/migration-guide-1.x-2.x.md 
b/docs/src/main/paradox/migration/migration-guide-1.x-2.x.md
index 30e70bc0e0..acdda63334 100644
--- a/docs/src/main/paradox/migration/migration-guide-1.x-2.x.md
+++ b/docs/src/main/paradox/migration/migration-guide-1.x-2.x.md
@@ -48,3 +48,168 @@ Java users should match on `ReceiveTimeout.class` instead.
 (`pekko.remote.artery.advanced.tcp-magic`). See
 @ref:[Changing TCP magic 
header](../additional/rolling-updates.md#changing-tcp-magic-header) for what 
this means for
 rolling updates. ([PR3425](https://github.com/apache/pekko/pull/3425))
+
+## Configuration Changes in Pekko 2.x
+
+The `reference.conf` defaults have changed in a number of places. If you 
override any of the settings
+below in your `application.conf`, or rely on their Pekko 1.x defaults, review 
this list.
+
+Some of these settings were also backported to Pekko 1.x releases. Those 
entries note the Pekko version
+in which the setting first appeared, so if you are already on that version or 
later you may have seen
+them before.
+
+### Changed default values
+
+* `pekko.actor.default-dispatcher.fork-join-executor.minimum-runnable` changed 
from `1` to `-1`.
+The setting first appeared in Pekko 1.7.0, with a default of `1`.
+The value `-1` selects a JDK-aware default: on JDK 25 and later the effective 
value is
+`min(8, max(1, parallelism / 2))`, and on earlier JDKs it is `1`, so the 
behavior only changes on
+JDK 25 and later. Set it explicitly to `1` to restore the Pekko 1.x behavior 
on all JDKs.
+The internal dispatcher (`pekko.actor.internal-dispatcher.fork-join-executor`) 
uses the same new default.
+([PR2890](https://github.com/apache/pekko/pull/2890))
+* `pekko.remote.artery.propagate-harmless-quarantine-events` changed from `on` 
to `off`, so harmless
+quarantine events are no longer propagated by default. 
([PR2430](https://github.com/apache/pekko/pull/2430))
+* `pekko.remote.artery.advanced.tcp-magic` changed from `["AKKA", "PEKK"]` to 
`["PEKK", "AKKA"]`
+(see the TCP magic header note above). The setting first appeared in Pekko 
1.7.0, with a default of
+`["AKKA", "PEKK"]`. ([PR3425](https://github.com/apache/pekko/pull/3425))
+* Artery compression heavy hitter detection is controlled by the new setting
+`pekko.remote.artery.advanced.compression.frequency-sketch-implementation`, 
which defaults to
+`"fast-frequency-sketch"` (a smaller, aging sketch). Set it to 
`"count-min-sketch"` to restore the
+Pekko 1.x implementation. ([PR3023](https://github.com/apache/pekko/pull/3023))
+* Persistence plugins no longer use the dedicated 
`pekko.persistence.dispatchers` by default. The
+`plugin-dispatcher` and `replay-dispatcher` settings in the journal and 
snapshot-store plugin
+fallbacks changed from 
`pekko.persistence.dispatchers.default-plugin-dispatcher` /
+`pekko.persistence.dispatchers.default-replay-dispatcher` to 
`pekko.actor.default-dispatcher`.
+The `pekko.persistence.dispatchers` definitions are deprecated; plugins that 
need a custom
+dispatcher should define their own. 
([PR2482](https://github.com/apache/pekko/pull/2482))
+* `pekko.serialization.jackson.read.max-document-length` and
+`pekko.serialization.jackson.read.max-token-count` changed from `-1` to 
`unlimited`, a value they now
+accept. Negative numbers such as `-1` still mean unlimited, so the effective 
limits are unchanged and
+existing overrides keep working. The same applies under 
`pekko.serialization.jackson3`.
+([PR3522](https://github.com/apache/pekko/pull/3522))
+
+### Changed behavior
+
+* `pekko.remote.artery.ssl.rotating-keys-engine.ca-cert-file` may now bundle 
more than one
+certificate (for example a root CA and its intermediates, or several roots 
while a CA is being
+rotated); all of them are trusted. Pekko 1.x only loaded the first certificate 
in the file. The
+setting and its default are unchanged. If your CA file contains certificates 
you do not intend to
+trust, remove them before upgrading. 
([PR3528](https://github.com/apache/pekko/pull/3528))
+
+### Removed configuration
+
+* `pekko.actor.typed.timeout` was removed along with the deprecated 
`TypedActor` API.
+([PR1969](https://github.com/apache/pekko/pull/1969))
+* `pekko.cluster.sharding.passivate-idle-entity-after` was removed; use
+`pekko.cluster.sharding.passivation.default-idle-strategy.idle-entity.timeout` 
instead.
+([PR3026](https://github.com/apache/pekko/pull/3026))
+* The `pekko.ssl-config` and top-level `ssl-config` sections were removed 
along with the
+`ssl-config` library dependency. 
([PR2127](https://github.com/apache/pekko/pull/2127))
+
+### New configuration
+
+The full `reference.conf` for each module, with descriptions of every setting, 
is listed in the
+@ref:[default configuration reference](../general/configuration-reference.md).
+
+@ref:[pekko-actor](../general/configuration-reference.md#config-pekko-actor):
+
+* 
`pekko.actor.default-dispatcher.fork-join-executor.virtual-thread-start-number`,
+`pekko.actor.default-dispatcher.thread-pool-executor.virtual-thread-start-number`
 and
+`pekko.actor.default-dispatcher.virtual-thread-executor.virtual-thread-start-number`
 control the
+starting id for virtual threads created by a dispatcher. 
([PR2242](https://github.com/apache/pekko/pull/2242))
+* `pekko.actor.default-dispatcher.thread-pool-executor.virtualize` allows a 
thread-pool-executor
+based dispatcher to run on virtual threads (JDK 21+). The same settings were 
added to
+`pekko.actor.default-blocking-io-dispatcher.thread-pool-executor`.
+([PR2169](https://github.com/apache/pekko/pull/2169))
+* `pekko.scheduled-clock-interval` controls how frequently the clock used by 
recency-based
+passivation strategies is updated. 
([PR2766](https://github.com/apache/pekko/pull/2766))
+* The async DNS resolver actors now run on the DNS dispatcher via the new 
deployment entries
+`pekko.actor.deployment."/IO-DNS/async-dns/*"` and (in
+@ref:[pekko-discovery](../general/configuration-reference.md#config-pekko-discovery))
+`pekko.actor.deployment."/SD-DNS/async-dns/*"`. 
([PR2895](https://github.com/apache/pekko/pull/2895))
+* `pekko.actor.serialization-max-nesting-depth` (default `32`) bounds the 
nesting depth when a
+serialized payload encloses another serialized payload. First appeared in 
Pekko 1.7.1.
+([PR3500](https://github.com/apache/pekko/pull/3500))
+* `pekko.serialization.max-decompressed-size` (default `unlimited`) bounds the 
size a gzipped payload
+may expand to when the cluster, cluster-metrics, cluster-sharding, 
cluster-tools and distributed-data
+serializers decompress it. First appeared in Pekko 1.7.1.
+([PR3502](https://github.com/apache/pekko/pull/3502))
+
+@ref:[pekko-cluster-sharding-typed](../general/configuration-reference.md#config-cluster-sharding-typed),
+@ref:[pekko-cluster-sharding](../general/configuration-reference.md#config-cluster-sharding)
 and
+@ref:[pekko-distributed-data](../general/configuration-reference.md#config-distributed-data):
+
+* `pekko.cluster.sharded-daemon-process.keep-alive-from-number-of-nodes` and
+`pekko.cluster.sharded-daemon-process.keep-alive-throttle-interval` tune 
keep-alive pinging, which
+is now performed from a limited number of nodes instead of every node.
+([PR2734](https://github.com/apache/pekko/pull/2734))
+* `pekko.cluster.sharding.healthcheck.disabled-after` disables the sharding 
health check after the
+configured duration post member-up. 
([PR2785](https://github.com/apache/pekko/pull/2785))
+* `pekko.cluster.distributed-data.expire-keys-after-inactivity` configures 
automatic expiry of
+inactive Distributed Data keys. 
([PR2733](https://github.com/apache/pekko/pull/2733))
+
+@ref:[pekko-persistence](../general/configuration-reference.md#config-pekko-persistence),
+@ref:[pekko-persistence-typed](../general/configuration-reference.md#config-pekko-persistence-typed)
 and
+@ref:[pekko-persistence-query](../general/configuration-reference.md#config-pekko-persistence-query):
+
+* `pekko.persistence.query.events-by-slice-firehose` is a new section 
configuring the
+events-by-slice firehose query that fans out one shared journal query to many 
consumers.
+([PR3277](https://github.com/apache/pekko/pull/3277))
+* `pekko.persistence.typed.event-writer.max-batch-size` and
+`pekko.persistence.typed.event-writer.ask-timeout` configure the event writer.
+([PR3432](https://github.com/apache/pekko/pull/3432))
+* `replay-batch-size` in the journal plugin fallback bounds the number of 
replayed events queued in
+a recovering persistent actor's mailbox. 
([PR3325](https://github.com/apache/pekko/pull/3325))
+* `only-one-snapshot` in the snapshot-store plugin fallback enables retention 
optimizations for
+snapshot stores that only keep the latest snapshot. 
([PR2767](https://github.com/apache/pekko/pull/2767))
+* `pekko.persistence.journal.inmem.delay-writes` can add an artificial write 
delay in tests.
+([PR3432](https://github.com/apache/pekko/pull/3432))
+
+@ref:[pekko-remote 
classic](../general/configuration-reference.md#config-pekko-remote) and
+@ref:[pekko-remote 
Artery](../general/configuration-reference.md#config-pekko-remote-artery):
+
+* `pekko.remote.classic.passive-connection-buffer-size` bounds message 
buffering during a passive
+connection handoff. ([PR3361](https://github.com/apache/pekko/pull/3361))
+* `pekko.remote.classic.netty.ssl.security.hostname-verification` enables TLS 
hostname verification
+for classic remoting. ([PR3164](https://github.com/apache/pekko/pull/3164))
+* `pekko.remote.artery.advanced.shutdown-streams-timeout` bounds the graceful 
drain of Artery
+streams during shutdown. ([PR3317](https://github.com/apache/pekko/pull/3317))
+* `pekko.remote.artery.ssl.rotating-keys-engine.keystore-password` sets the 
password for the
+in-memory keystore used to wrap PEM-loaded keys; override it in production.
+([PR3397](https://github.com/apache/pekko/pull/3397))
+
+@ref:[pekko-serialization-jackson](../serialization-jackson.md):
+
+* `pekko.serialization.jackson.compression.max-decompressed-size` (default 
`unlimited`) bounds the size
+of a payload after decompression. The same setting exists under 
`pekko.serialization.jackson3`.
+First appeared in Pekko 1.7.1. 
([PR3491](https://github.com/apache/pekko/pull/3491),
+[PR3515](https://github.com/apache/pekko/pull/3515))
+* The new `pekko-serialization-jackson3` module (based on Jackson 3) is 
configured under
+`pekko.serialization.jackson3`, mirroring the `pekko.serialization.jackson` 
settings.
+([PR2348](https://github.com/apache/pekko/pull/2348))
+
+@ref:[pekko-stream](../general/configuration-reference.md#config-pekko-stream):
+
+* `pekko.stream.materializer.stage-errors-default-log-level` controls the log 
level used for
+stream stage errors. ([PR2805](https://github.com/apache/pekko/pull/2805))
+* `pekko.stream.materializer.stage-actor-drain-batch` bounds the number of 
stage-actor messages
+drained per envelope for lazily materialized stage actors. 
([PR3035](https://github.com/apache/pekko/pull/3035))
+* `pekko.stream.materializer.tls.engine` selects the stream TLS engine 
implementation
+(`"legacy-actor"` or the opt-in `"graph-stage"`). 
([PR2878](https://github.com/apache/pekko/pull/2878))
+
+### Serialization bindings
+
+These serialization changes matter if you do a rolling update from Pekko 1.x 
to 2.x, or need to roll
+back:
+
+* `org.apache.pekko.util.ByteString$ByteString2`, a new `ByteString` 
implementation, is bound to the
+existing `primitive-bytestring` serializer. That serializer writes no 
manifest, so Pekko 1.x nodes read
+these messages as an ordinary `ByteString`. 
([PR2924](https://github.com/apache/pekko/pull/2924))
+* The `typed-sharding` serializer is now bound to the internal 
`ClusterShardingTypedSerializable` marker
+instead of `ShardingEnvelope`. `ShardingEnvelope` is serialized as before, but 
the serializer also
+handles new Sharded Daemon Process messages (its state, and the commands for 
getting and changing the
+number of processes) that Pekko 1.x nodes cannot deserialize. 
([PR2755](https://github.com/apache/pekko/pull/2755))
+* The new `FilteredPayload` placeholder, which is stored in the journal in 
place of a filtered event
+(for example with events-by-slice queries and projections), has a new 
serializer with identifier `34`.
+Pekko 1.x cannot deserialize it, so do not run Pekko 1.x against a journal 
once such events have been
+written. ([PR3275](https://github.com/apache/pekko/pull/3275))
diff --git a/docs/src/main/paradox/project/rolling-update.md 
b/docs/src/main/paradox/project/rolling-update.md
index 36793dd81d..a68c7e5284 100644
--- a/docs/src/main/paradox/project/rolling-update.md
+++ b/docs/src/main/paradox/project/rolling-update.md
@@ -13,4 +13,19 @@ update completely before starting next update.
 @ref:[Rolling update from classic remoting to 
Artery](../additional/rolling-updates.md#migrating-from-classic-remoting-to-artery)
 is not supported since the protocol
 is completely different. It will require a full cluster shutdown and new 
startup.
 
-@@@
\ No newline at end of file
+@@@
+
+## Upgrading from Pekko 1.x to 2.x
+
+Pekko 2.x is not binary compatible with Pekko 1.x, so all the Pekko modules 
(and any libraries built on
+Pekko 1.x) must be upgraded together. Read the
+@ref:[migration guide](../migration/migration-guide-1.x-2.x.md) before 
planning a rolling update, in
+particular the breaking changes and the configuration changes, and check how 
they affect the messages
+exchanged between nodes, your persisted data and your configuration.
+
+For a rolling update of a cluster from Pekko 1.x to 2.x:
+
+* First upgrade the whole cluster to the latest Pekko 1.7.x release. Pekko 2.x 
sends a different Artery
+  TCP magic header by default, which Pekko 1.6.x and earlier reject, see
+  @ref:[Changing TCP magic 
header](../additional/rolling-updates.md#changing-tcp-magic-header).
+* Then roll out Pekko 2.x as a separate update.


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to