From 32571d387d8202f30c7c5aa78923a0d3467500aa Mon Sep 17 00:00:00 2001 From: JingZhang Chen Date: Tue, 19 Dec 2023 15:28:09 +0800 Subject: [PATCH] chore: reducing cr cost --- .../pekko/actor/typed/javadsl/Routers.scala | 4 +- .../pekko/actor/typed/scaladsl/Routers.scala | 4 +- .../org/apache/pekko/cluster/ddata/GSet.scala | 2 +- .../org/apache/pekko/cluster/ddata/GSet.scala | 2 +- .../apache/pekko/cluster/ddata/GCounter.scala | 2 +- .../pekko/cluster/ddata/LWWRegister.scala | 2 +- .../apache/pekko/cluster/ddata/ORSet.scala | 4 +- .../pekko/cluster/ddata/PNCounter.scala | 2 +- .../pekko/cluster/ddata/Replicator.scala | 2 +- docs/src/main/paradox/distributed-data.md | 2 +- docs/src/main/paradox/fsm.md | 2 +- .../general/message-delivery-reliability.md | 2 +- .../paradox/general/stream/stream-design.md | 2 +- docs/src/main/paradox/persistence-query.md | 2 +- .../paradox/persistence-schema-evolution.md | 10 ++-- docs/src/main/paradox/remoting-artery.md | 2 +- docs/src/main/paradox/serialization.md | 2 +- .../stream/reactive-streams-interop.md | 2 +- docs/src/main/paradox/testing.md | 4 +- .../main/paradox/typed/choosing-cluster.md | 2 +- .../main/paradox/typed/cluster-membership.md | 2 +- docs/src/main/paradox/typed/dispatchers.md | 2 +- .../main/paradox/typed/distributed-data.md | 2 +- .../main/paradox/typed/failure-detector.md | 2 +- docs/src/main/paradox/typed/guide/modules.md | 2 +- docs/src/main/paradox/typed/persistence.md | 2 +- docs/src/main/paradox/typed/routers.md | 2 +- docs/src/main/paradox/typed/style-guide.md | 4 +- .../pekko/persistence/typed/crdt/ORSet.scala | 4 +- scripts/link-validator.conf | 55 ------------------- .../pekko/testkit/metrics/MetricsKit.scala | 2 +- 31 files changed, 40 insertions(+), 95 deletions(-) diff --git a/actor-typed/src/main/scala/org/apache/pekko/actor/typed/javadsl/Routers.scala b/actor-typed/src/main/scala/org/apache/pekko/actor/typed/javadsl/Routers.scala index 666023cbc69..8cb969e004b 100644 --- a/actor-typed/src/main/scala/org/apache/pekko/actor/typed/javadsl/Routers.scala +++ b/actor-typed/src/main/scala/org/apache/pekko/actor/typed/javadsl/Routers.scala @@ -108,7 +108,7 @@ abstract class GroupRouter[T] extends DeferredBehavior[T] { * * @param virtualNodesFactor This factor has to be greater or equal to 1. Assuming that the reader * knows what consistent hashing is - * (if not, please refer: https://tom-e-white.com/2007/11/consistent-hashing.html or wiki). + * (if not, please refer: https://www.tom-e-white.com/2007/11/consistent-hashing.html or wiki). * This number is responsible for creating additional, * virtual addresses for a provided set of routees, * so that in the total number of points on hashing ring @@ -166,7 +166,7 @@ abstract class PoolRouter[T] extends DeferredBehavior[T] { * * @param virtualNodesFactor This factor has to be greater or equal to 1. Assuming that the reader * knows what consistent hashing is - * (if not, please refer: https://tom-e-white.com/2007/11/consistent-hashing.html or wiki). + * (if not, please refer: https://www.tom-e-white.com/2007/11/consistent-hashing.html or wiki). * This number is responsible for creating additional, * virtual addresses for a provided set of routees, * so that in the total number of points on hashing ring diff --git a/actor-typed/src/main/scala/org/apache/pekko/actor/typed/scaladsl/Routers.scala b/actor-typed/src/main/scala/org/apache/pekko/actor/typed/scaladsl/Routers.scala index 72d7982ed92..6cd23279c98 100644 --- a/actor-typed/src/main/scala/org/apache/pekko/actor/typed/scaladsl/Routers.scala +++ b/actor-typed/src/main/scala/org/apache/pekko/actor/typed/scaladsl/Routers.scala @@ -102,7 +102,7 @@ trait GroupRouter[T] extends Behavior[T] { * * @param virtualNodesFactor This factor has to be greater or equal to 1. Assuming that the reader * knows what consistent hashing is - * (if not, please refer: https://tom-e-white.com/2007/11/consistent-hashing.html or wiki). + * (if not, please refer: https://www.tom-e-white.com/2007/11/consistent-hashing.html or wiki). * This number is responsible for creating additional, * virtual addresses for a provided set of routees, * so that in the total number of points on hashing ring @@ -158,7 +158,7 @@ trait PoolRouter[T] extends Behavior[T] { * * @param virtualNodesFactor This factor has to be greater or equal to 1. Assuming that the reader * knows what consistent hashing is - * (if not, please refer: https://tom-e-white.com/2007/11/consistent-hashing.html or wiki). + * (if not, please refer: https://www.tom-e-white.com/2007/11/consistent-hashing.html or wiki). * This number is responsible for creating additional, * virtual addresses for a provided set of routees, * so that in the total number of points on hashing ring diff --git a/distributed-data/src/main/scala-2/org/apache/pekko/cluster/ddata/GSet.scala b/distributed-data/src/main/scala-2/org/apache/pekko/cluster/ddata/GSet.scala index e901cbf9252..839938fff04 100644 --- a/distributed-data/src/main/scala-2/org/apache/pekko/cluster/ddata/GSet.scala +++ b/distributed-data/src/main/scala-2/org/apache/pekko/cluster/ddata/GSet.scala @@ -32,7 +32,7 @@ object GSet { * remove elements of a G-Set. * * It is described in the paper - * A comprehensive study of Convergent and Commutative Replicated Data Types. + * A comprehensive study of Convergent and Commutative Replicated Data Types. * * A G-Set doesn't accumulate any garbage apart from the elements themselves. * diff --git a/distributed-data/src/main/scala-3/org/apache/pekko/cluster/ddata/GSet.scala b/distributed-data/src/main/scala-3/org/apache/pekko/cluster/ddata/GSet.scala index ed1673fa36c..d6fb966ab14 100644 --- a/distributed-data/src/main/scala-3/org/apache/pekko/cluster/ddata/GSet.scala +++ b/distributed-data/src/main/scala-3/org/apache/pekko/cluster/ddata/GSet.scala @@ -32,7 +32,7 @@ object GSet { * remove elements of a G-Set. * * It is described in the paper - * A comprehensive study of Convergent and Commutative Replicated Data Types. + * A comprehensive study of Convergent and Commutative Replicated Data Types. * * A G-Set doesn't accumulate any garbage apart from the elements themselves. * diff --git a/distributed-data/src/main/scala/org/apache/pekko/cluster/ddata/GCounter.scala b/distributed-data/src/main/scala/org/apache/pekko/cluster/ddata/GCounter.scala index 862405c06d1..cd7ffe63109 100644 --- a/distributed-data/src/main/scala/org/apache/pekko/cluster/ddata/GCounter.scala +++ b/distributed-data/src/main/scala/org/apache/pekko/cluster/ddata/GCounter.scala @@ -41,7 +41,7 @@ object GCounter { * Implements a 'Growing Counter' CRDT, also called a 'G-Counter'. * * It is described in the paper - * A comprehensive study of Convergent and Commutative Replicated Data Types. + * A comprehensive study of Convergent and Commutative Replicated Data Types. * * A G-Counter is a increment-only counter (inspired by vector clocks) in * which only increment and merge are possible. Incrementing the counter diff --git a/distributed-data/src/main/scala/org/apache/pekko/cluster/ddata/LWWRegister.scala b/distributed-data/src/main/scala/org/apache/pekko/cluster/ddata/LWWRegister.scala index e515d1f4179..d53f561f681 100644 --- a/distributed-data/src/main/scala/org/apache/pekko/cluster/ddata/LWWRegister.scala +++ b/distributed-data/src/main/scala/org/apache/pekko/cluster/ddata/LWWRegister.scala @@ -113,7 +113,7 @@ object LWWRegister { * Implements a 'Last Writer Wins Register' CRDT, also called a 'LWW-Register'. * * It is described in the paper - * A comprehensive study of Convergent and Commutative Replicated Data Types. + * A comprehensive study of Convergent and Commutative Replicated Data Types. * * Merge takes the register with highest timestamp. Note that this * relies on synchronized clocks. `LWWRegister` should only be used when the choice of diff --git a/distributed-data/src/main/scala/org/apache/pekko/cluster/ddata/ORSet.scala b/distributed-data/src/main/scala/org/apache/pekko/cluster/ddata/ORSet.scala index 0d0e725007f..1fc533144ab 100644 --- a/distributed-data/src/main/scala/org/apache/pekko/cluster/ddata/ORSet.scala +++ b/distributed-data/src/main/scala/org/apache/pekko/cluster/ddata/ORSet.scala @@ -293,10 +293,10 @@ object ORSet { * over remove. * * It is not implemented as in the paper - * A comprehensive study of Convergent and Commutative Replicated Data Types. + * A comprehensive study of Convergent and Commutative Replicated Data Types. * This is more space efficient and doesn't accumulate garbage for removed elements. * It is described in the paper - * An optimized conflict-free replicated set + * An optimized conflict-free replicated set * The implementation is inspired by the Riak DT * riak_dt_orswot. * diff --git a/distributed-data/src/main/scala/org/apache/pekko/cluster/ddata/PNCounter.scala b/distributed-data/src/main/scala/org/apache/pekko/cluster/ddata/PNCounter.scala index d2c6f1816d9..63a69febce4 100644 --- a/distributed-data/src/main/scala/org/apache/pekko/cluster/ddata/PNCounter.scala +++ b/distributed-data/src/main/scala/org/apache/pekko/cluster/ddata/PNCounter.scala @@ -40,7 +40,7 @@ object PNCounter { * Implements a 'Increment/Decrement Counter' CRDT, also called a 'PN-Counter'. * * It is described in the paper - * A comprehensive study of Convergent and Commutative Replicated Data Types. + * A comprehensive study of Convergent and Commutative Replicated Data Types. * * PN-Counters allow the counter to be incremented by tracking the * increments (P) separate from the decrements (N). Both P and N are represented diff --git a/distributed-data/src/main/scala/org/apache/pekko/cluster/ddata/Replicator.scala b/distributed-data/src/main/scala/org/apache/pekko/cluster/ddata/Replicator.scala index 7765ec3c988..8b64e33ec66 100644 --- a/distributed-data/src/main/scala/org/apache/pekko/cluster/ddata/Replicator.scala +++ b/distributed-data/src/main/scala/org/apache/pekko/cluster/ddata/Replicator.scala @@ -1197,7 +1197,7 @@ object Replicator { * Eventually Consistent Data Structures * talk by Sean Cribbs and and the * talk by Mark Shapiro - * and read the excellent paper + * and read the excellent paper * A comprehensive study of Convergent and Commutative Replicated Data Types * by Mark Shapiro et. al. * diff --git a/docs/src/main/paradox/distributed-data.md b/docs/src/main/paradox/distributed-data.md index 543784a3cd2..d9ae7a2f241 100644 --- a/docs/src/main/paradox/distributed-data.md +++ b/docs/src/main/paradox/distributed-data.md @@ -273,7 +273,7 @@ For the full documentation of this feature and for new projects see @ref:[Limita * [Strong Eventual Consistency and Conflict-free Replicated Data Types (video)](https://www.youtube.com/watch?v=oyUHd894w18&feature=youtu.be) talk by Mark Shapiro - * [A comprehensive study of Convergent and Commutative Replicated Data Types](https://inria.hal.science/file/index/docid/555588/filename/techreport.pdf) + * [A comprehensive study of Convergent and Commutative Replicated Data Types](https://hal.inria.fr/file/index/docid/555588/filename/techreport.pdf) paper by Mark Shapiro et. al. ## Configuration diff --git a/docs/src/main/paradox/fsm.md b/docs/src/main/paradox/fsm.md index 0f76077c0f9..c97df9f2145 100644 --- a/docs/src/main/paradox/fsm.md +++ b/docs/src/main/paradox/fsm.md @@ -19,7 +19,7 @@ To use Finite State Machine actors, you must add the following dependency in you ## Overview The FSM (Finite State Machine) is available as @scala[a mixin for the] @java[an abstract base class that implements an] Pekko Actor and -is best described in the [Erlang design principles](https://erlang.org/documentation/doc-4.8.2/doc/design_principles/fsm.html) +is best described in the [Erlang design principles](https://www.erlang.org/documentation/doc-4.8.2/doc/design_principles/fsm.html) A FSM can be described as a set of relations of the form: diff --git a/docs/src/main/paradox/general/message-delivery-reliability.md b/docs/src/main/paradox/general/message-delivery-reliability.md index 639cb770be6..9766d413385 100644 --- a/docs/src/main/paradox/general/message-delivery-reliability.md +++ b/docs/src/main/paradox/general/message-delivery-reliability.md @@ -96,7 +96,7 @@ Pekko embraces distributed computing and makes the fallibility of communication explicit through message passing, therefore it does not try to lie and emulate a leaky abstraction. This is a model that has been used with great success in Erlang and requires the users to design their applications around it. You can -read more about this approach in the [Erlang documentation](https://www.erlang.org/faq/academic.html) (section 10.8 and +read more about this approach in the [Erlang documentation](https://erlang.org/faq/academic.html) (section 10.8 and 10.9), Pekko follows it closely. Another angle on this issue is that by providing only basic guarantees those diff --git a/docs/src/main/paradox/general/stream/stream-design.md b/docs/src/main/paradox/general/stream/stream-design.md index ba7f4abd8fe..f35785b5f99 100644 --- a/docs/src/main/paradox/general/stream/stream-design.md +++ b/docs/src/main/paradox/general/stream/stream-design.md @@ -104,7 +104,7 @@ A source that emits a stream of streams is still a normal Source, the kind of el ## The difference between Error and Failure -The starting point for this discussion is the [definition given by the Reactive Manifesto](http://www.reactivemanifesto.org/glossary#Failure). Translated to streams this means that an error is accessible within the stream as a normal data element, while a failure means that the stream itself has failed and is collapsing. In concrete terms, on the Reactive Streams interface level data elements (including errors) are signaled via [onNext](https://javadoc.io/doc/org.reactivestreams/reactive-streams/latest/org/reactivestreams/Subscriber.html#onNext\(T\)) while failures raise the [onError](https://javadoc.io/doc/org.reactivestreams/reactive-streams/latest/org/reactivestreams/Subscriber.html#onError\(java.lang.Throwable\)) signal. +The starting point for this discussion is the [definition given by the Reactive Manifesto](https://www.reactivemanifesto.org/glossary#Failure). Translated to streams this means that an error is accessible within the stream as a normal data element, while a failure means that the stream itself has failed and is collapsing. In concrete terms, on the Reactive Streams interface level data elements (including errors) are signaled via [onNext](https://javadoc.io/doc/org.reactivestreams/reactive-streams/latest/org/reactivestreams/Subscriber.html#onNext\(T\)) while failures raise the [onError](https://javadoc.io/doc/org.reactivestreams/reactive-streams/latest/org/reactivestreams/Subscriber.html#onError\(java.lang.Throwable\)) signal. @@@ note diff --git a/docs/src/main/paradox/persistence-query.md b/docs/src/main/paradox/persistence-query.md index e5eaca2bcc6..01b1d5a7d2f 100644 --- a/docs/src/main/paradox/persistence-query.md +++ b/docs/src/main/paradox/persistence-query.md @@ -202,7 +202,7 @@ Java ## Performance and denormalization -When building systems using @ref:[Event Sourcing](typed/persistence.md#event-sourcing-concepts) and CQRS ([Command & Query Responsibility Segregation](https://learn.microsoft.com/en-us/previous-versions/msp-n-p/jj554200%28v=pandp.10%29)) techniques +When building systems using @ref:[Event Sourcing](typed/persistence.md#event-sourcing-concepts) and CQRS ([Command & Query Responsibility Segregation](https://docs.microsoft.com/en-us/previous-versions/msp-n-p/jj554200%28v=pandp.10%29)) techniques it is tremendously important to realise that the write-side has completely different needs from the read-side, and separating those concerns into datastores that are optimised for either side makes it possible to offer the best experience for the write and read sides independently. diff --git a/docs/src/main/paradox/persistence-schema-evolution.md b/docs/src/main/paradox/persistence-schema-evolution.md index ce9214141d7..13377ad2fd2 100644 --- a/docs/src/main/paradox/persistence-schema-evolution.md +++ b/docs/src/main/paradox/persistence-schema-evolution.md @@ -45,7 +45,7 @@ evolution feel free to submit Pull Requests to this page to extend it. In recent years we have observed a tremendous move towards immutable append-only datastores, with event-sourcing being the prime technique successfully being used in these settings. For an excellent overview why and how immutable data makes scalability -and systems design much simpler you may want to read Pat Helland's excellent [Immutability Changes Everything](http://www.cidrdb.org/cidr2015/Papers/CIDR15_Paper16.pdf) whitepaper. +and systems design much simpler you may want to read Pat Helland's excellent [Immutability Changes Everything](http://cidrdb.org/cidr2015/Papers/CIDR15_Paper16.pdf) whitepaper. Since with [Event Sourcing](https://martinfowler.com/eaaDev/EventSourcing.html) the **events are immutable** and usually never deleted – the way schema evolution is handled differs from how one would go about it in a mutable database setting (e.g. in typical CRUD database applications). @@ -98,12 +98,12 @@ to perform this on a live system. recommendation if you don't have other preference. It also has support for @ref:[Schema Evolution](serialization-jackson.md#schema-evolution). -[Google Protocol Buffers](https://protobuf.dev/) is good if you want +[Google Protocol Buffers](https://developers.google.com/protocol-buffers/) is good if you want more control over the schema evolution of your messages, but it requires more work to develop and maintain the mapping between serialized representation and domain representation. Binary serialization formats that we have seen work well for long-lived applications include the very flexible IDL based: -[Google Protocol Buffers](https://protobuf.dev), [Apache Thrift](https://thrift.apache.org/) +[Google Protocol Buffers](https://developers.google.com/protocol-buffers), [Apache Thrift](https://thrift.apache.org/) or [Apache Avro](https://avro.apache.org). Avro schema evolution is more "entire schema" based, instead of single fields focused like in protobuf or thrift, and usually requires using some kind of schema registry. @@ -113,7 +113,7 @@ by Martin Kleppmann. ### Provided default serializers -Pekko Persistence provides [Google Protocol Buffers](https://protobuf.dev/) based serializers (using @ref:[Pekko Serialization](serialization.md)) +Pekko Persistence provides [Google Protocol Buffers](https://developers.google.com/protocol-buffers/) based serializers (using @ref:[Pekko Serialization](serialization.md)) for its own message types such as @apidoc[PersistentRepr], @apidoc[AtomicWrite] and snapshots. Journal plugin implementations *may* choose to use those provided serializers, or pick a serializer which suits the underlying database better. @@ -403,7 +403,7 @@ persist the corresponding events (the "*data model*"). For example because the d independently of the domain model. Another situation where this technique may be useful is when your serialization tool of choice requires generated -classes to be used for serialization and deserialization of objects, like for example [Google Protocol Buffers](https://protobuf.dev/) do, +classes to be used for serialization and deserialization of objects, like for example [Google Protocol Buffers](https://developers.google.com/protocol-buffers/) do, yet you do not want to leak this implementation detail into the domain model itself, which you'd like to model as plain @scala[Scala case]@java[Java] classes. diff --git a/docs/src/main/paradox/remoting-artery.md b/docs/src/main/paradox/remoting-artery.md index 3b8c72101ec..a2abd53f364 100644 --- a/docs/src/main/paradox/remoting-artery.md +++ b/docs/src/main/paradox/remoting-artery.md @@ -892,7 +892,7 @@ Any space used in the mount will count towards your container's memory usage. ### Flight Recorder -When running on JDK 11 Artery specific flight recording is available through the [Java Flight Recorder (JFR)](https://openjdk.org/jeps/328). +When running on JDK 11 Artery specific flight recording is available through the [Java Flight Recorder (JFR)](https://openjdk.java.net/jeps/328). The flight recorder is automatically enabled by detecting JDK 11 but can be disabled if needed by setting `pekko.java-flight-recorder.enabled = false`. Low overhead Artery specific events are emitted by default when JFR is enabled, higher overhead events needs a custom settings template and are not enabled automatically with the `profiling` JFR template. diff --git a/docs/src/main/paradox/serialization.md b/docs/src/main/paradox/serialization.md index 069c4948f7f..14a6248d5fa 100644 --- a/docs/src/main/paradox/serialization.md +++ b/docs/src/main/paradox/serialization.md @@ -25,7 +25,7 @@ The serialization mechanism in Pekko allows you to write custom serializers and @ref:[Serialization with Jackson](serialization-jackson.md) is a good choice in many cases and our recommendation if you don't have other preference. -[Google Protocol Buffers](https://protobuf.dev/) is good if you want +[Google Protocol Buffers](https://developers.google.com/protocol-buffers/) is good if you want more control over the schema evolution of your messages, but it requires more work to develop and maintain the mapping between serialized representation and domain representation. diff --git a/docs/src/main/paradox/stream/reactive-streams-interop.md b/docs/src/main/paradox/stream/reactive-streams-interop.md index d952bacf2e1..b5c0d309819 100644 --- a/docs/src/main/paradox/stream/reactive-streams-interop.md +++ b/docs/src/main/paradox/stream/reactive-streams-interop.md @@ -136,5 +136,5 @@ An incomplete list of other implementations: * [Reactor (1.1+)](https://github.com/reactor/reactor) * [RxJava](https://github.com/ReactiveX/RxJavaReactiveStreams) - * [Ratpack](https://ratpack.io/manual/current/streams.html) + * [Ratpack](https://www.ratpack.io/manual/current/streams.html) * [Slick](https://scala-slick.org/) diff --git a/docs/src/main/paradox/testing.md b/docs/src/main/paradox/testing.md index 12f967944ce..ec470368e4d 100644 --- a/docs/src/main/paradox/testing.md +++ b/docs/src/main/paradox/testing.md @@ -310,7 +310,7 @@ wall time, not CPU time or system time. @@@ div { .group-scala } Ray Roestenburg has written a great article on using the Akka TestKit (but can also be applied to the Pekko Testkit): -[http://web.archive.org/web/20180114133958/http://roestenburg.agilesquad.com/2011/02/unit-testing-akka-actors-with-testkit_12.html](http://web.archive.org/web/20180114133958/http://roestenburg.agilesquad.com/2011/02/unit-testing-akka-actors-with-testkit_12.html). +[https://web.archive.org/web/20180114133958/http://roestenburg.agilesquad.com/2011/02/unit-testing-akka-actors-with-testkit_12.html](https://web.archive.org/web/20180114133958/http://roestenburg.agilesquad.com/2011/02/unit-testing-akka-actors-with-testkit_12.html). His full example is also available @ref:[here](testing.md#example). @@@ @@ -812,7 +812,7 @@ to the @ref:[reference configuration](general/configuration-reference.md#config- ## Example Ray Roestenburg's example code from his blog, which unfortunately is only available on -[web archive](http://web.archive.org/web/20180114133958/http://roestenburg.agilesquad.com/2011/02/unit-testing-akka-actors-with-testkit_12.html), +[web archive](https://web.archive.org/web/20180114133958/http://roestenburg.agilesquad.com/2011/02/unit-testing-akka-actors-with-testkit_12.html), adapted to work with Akka 2.x. @@snip [TestKitUsageSpec.scala](/docs/src/test/scala/docs/testkit/TestKitUsageSpec.scala) { #testkit-usage } diff --git a/docs/src/main/paradox/typed/choosing-cluster.md b/docs/src/main/paradox/typed/choosing-cluster.md index ac52da061b9..88c7ab6ee65 100644 --- a/docs/src/main/paradox/typed/choosing-cluster.md +++ b/docs/src/main/paradox/typed/choosing-cluster.md @@ -10,7 +10,7 @@ Microservices architecture has many attractive properties, such as the independe multiple smaller and more focused teams that can deliver new functionality more frequently and can respond quicker to business opportunities. Reactive Microservices should be isolated, autonomous, and have a single responsibility as identified by Jonas Bonér in the book -[Reactive Microsystems: The Evolution of Microservices at Scale](https://go.lightbend.com/reactive-microsystems-evolution-of-microservices-scalability-oreilly). +[Reactive Microsystems: The Evolution of Microservices at Scale](https://www.lightbend.com/ebooks/reactive-microsystems-evolution-of-microservices-scalability-oreilly). In a microservices architecture, you should consider communication within a service and between services. diff --git a/docs/src/main/paradox/typed/cluster-membership.md b/docs/src/main/paradox/typed/cluster-membership.md index 0868b00abde..e26313693b7 100644 --- a/docs/src/main/paradox/typed/cluster-membership.md +++ b/docs/src/main/paradox/typed/cluster-membership.md @@ -29,7 +29,7 @@ UID. ## Member States -The cluster membership state is a specialized [CRDT](https://inria.hal.science/file/index/docid/555588/filename/techreport.pdf), which means that it has a monotonic +The cluster membership state is a specialized [CRDT](https://hal.inria.fr/file/index/docid/555588/filename/techreport.pdf), which means that it has a monotonic merge function. When concurrent changes occur on different nodes the updates can always be merged and converge to the same end result. diff --git a/docs/src/main/paradox/typed/dispatchers.md b/docs/src/main/paradox/typed/dispatchers.md index 3dc7e6c3cff..c98be3a043e 100644 --- a/docs/src/main/paradox/typed/dispatchers.md +++ b/docs/src/main/paradox/typed/dispatchers.md @@ -214,7 +214,7 @@ In the thread state diagrams below the colors have the following meaning: * Green - Runnable state The thread information was recorded using the YourKit profiler, however any good JVM profiler -has this feature (including the free and bundled with the Oracle JDK [VisualVM](https://visualvm.github.io/), as well as [Java Mission Control](https://openjdk.org/projects/jmc/)). +has this feature (including the free and bundled with the Oracle JDK [VisualVM](https://visualvm.github.io/), as well as [Java Mission Control](https://openjdk.java.net/projects/jmc/)). The orange portion of the thread shows that it is idle. Idle threads are fine - they're ready to accept new work. However, a large number of turquoise (blocked, or sleeping as in our example) threads diff --git a/docs/src/main/paradox/typed/distributed-data.md b/docs/src/main/paradox/typed/distributed-data.md index 2e23646a70c..e96cad28f13 100644 --- a/docs/src/main/paradox/typed/distributed-data.md +++ b/docs/src/main/paradox/typed/distributed-data.md @@ -670,7 +670,7 @@ All entries can be made durable by specifying: pekko.cluster.distributed-data.durable.keys = ["*"] ``` -@scala[[LMDB](https://www.symas.com/lmdb/technical)]@java[[LMDB](https://github.com/lmdbjava/lmdbjava/)] is the default storage implementation. It is +@scala[[LMDB](https://symas.com/lmdb/technical/)]@java[[LMDB](https://github.com/lmdbjava/lmdbjava/)] is the default storage implementation. It is possible to replace that with another implementation by implementing the actor protocol described in `org.apache.pekko.cluster.ddata.DurableStore` and defining the `pekko.cluster.distributed-data.durable.store-actor-class` property for the new implementation. diff --git a/docs/src/main/paradox/typed/failure-detector.md b/docs/src/main/paradox/typed/failure-detector.md index 903ffdee513..61262ae6dcd 100644 --- a/docs/src/main/paradox/typed/failure-detector.md +++ b/docs/src/main/paradox/typed/failure-detector.md @@ -5,7 +5,7 @@ Remote DeathWatch uses heartbeat messages and the failure detector to detect network failures and JVM crashes. The heartbeat arrival times are interpreted by an implementation of -[The Phi Accrual Failure Detector](https://www.semanticscholar.org/paper/The-spl-phi-accrual-failure-detector-Hayashibara-D%C3%A9fago/11ae4c0c0d0c36dc177c1fff5eb84fa49aa3e1a8?p2df) by Hayashibara et al. +[The Phi Accrual Failure Detector](https://pdfs.semanticscholar.org/11ae/4c0c0d0c36dc177c1fff5eb84fa49aa3e1a8.pdf) by Hayashibara et al. ## Failure Detector Heartbeats diff --git a/docs/src/main/paradox/typed/guide/modules.md b/docs/src/main/paradox/typed/guide/modules.md index aaf8821e853..0b3f9b0bb77 100644 --- a/docs/src/main/paradox/typed/guide/modules.md +++ b/docs/src/main/paradox/typed/guide/modules.md @@ -166,7 +166,7 @@ cluster for example) or alternate views (like reports). Persistence tackles the following challenges: * How to restore the state of an entity/actor when system restarts or crashes. -* How to implement a [CQRS system](https://learn.microsoft.com/en-us/previous-versions/msp-n-p/jj591573%28v=pandp.10%29). +* How to implement a [CQRS system](https://docs.microsoft.com/en-us/previous-versions/msp-n-p/jj591573%28v=pandp.10%29). * How to ensure reliable delivery of messages in face of network errors and system crashes. * How to introspect domain events that have led an entity to its current state. * How to leverage [Event Sourcing](https://martinfowler.com/eaaDev/EventSourcing.html) in your application to support long-running processes while the project continues to evolve. diff --git a/docs/src/main/paradox/typed/persistence.md b/docs/src/main/paradox/typed/persistence.md index a02ea046e98..3a6fdfd57ff 100644 --- a/docs/src/main/paradox/typed/persistence.md +++ b/docs/src/main/paradox/typed/persistence.md @@ -52,7 +52,7 @@ subject id (person) and deleting the key when that data subject is to be forgott ### Event Sourcing concepts -See an [introduction to Event Sourcing](https://learn.microsoft.com/en-us/previous-versions/msp-n-p/jj591559%28v=pandp.10%29) at MSDN. +See an [introduction to Event Sourcing](https://docs.microsoft.com/en-us/previous-versions/msp-n-p/jj591559%28v=pandp.10%29) at MSDN. Another excellent article about "thinking in Events" is [Events As First-Class Citizens](https://hackernoon.com/events-as-first-class-citizens-8633e8479493) by Randy Shoup. It is a short and recommended read if you're starting developing Events based applications. diff --git a/docs/src/main/paradox/typed/routers.md b/docs/src/main/paradox/typed/routers.md index 09644e70abc..70aefdc64f9 100644 --- a/docs/src/main/paradox/typed/routers.md +++ b/docs/src/main/paradox/typed/routers.md @@ -130,7 +130,7 @@ An optional parameter `preferLocalRoutees` can be used for this strategy. Router ### Consistent Hashing Uses [consistent hashing](https://en.wikipedia.org/wiki/Consistent_hashing) to select a routee based -on the sent message. This [article](https://tom-e-white.com/2007/11/consistent-hashing.html) +on the sent message. This [article](http://www.tom-e-white.com/2007/11/consistent-hashing.html) gives good insight into how consistent hashing is implemented. Currently you have to define hashMapping of the router to map incoming messages to their consistent diff --git a/docs/src/main/paradox/typed/style-guide.md b/docs/src/main/paradox/typed/style-guide.md index d87743889ed..b7eb499456c 100644 --- a/docs/src/main/paradox/typed/style-guide.md +++ b/docs/src/main/paradox/typed/style-guide.md @@ -467,8 +467,8 @@ be good to know that it's optional in case you would prefer a different approach * direct processing because there is only one message type * if or switch statements * annotation processor -* [Vavr Pattern Matching DSL](https://docs.vavr.io/#_pattern_matching) -* pattern matching since JDK 14 ([JEP 305](https://openjdk.org/jeps/305)) +* [Vavr Pattern Matching DSL](https://www.vavr.io/vavr-docs/#_pattern_matching) +* pattern matching since JDK 14 ([JEP 305](https://openjdk.java.net/jeps/305)) In `Behaviors` there are `receive`, `receiveMessage` and `receiveSignal` factory methods that takes functions instead of using the `ReceiveBuilder`, which is the `receive` with the class parameter. diff --git a/persistence-typed/src/main/scala/org/apache/pekko/persistence/typed/crdt/ORSet.scala b/persistence-typed/src/main/scala/org/apache/pekko/persistence/typed/crdt/ORSet.scala index 2db3181bb0f..9fbf0941619 100644 --- a/persistence-typed/src/main/scala/org/apache/pekko/persistence/typed/crdt/ORSet.scala +++ b/persistence-typed/src/main/scala/org/apache/pekko/persistence/typed/crdt/ORSet.scala @@ -260,10 +260,10 @@ object ORSet { * over remove. * * It is not implemented as in the paper - * A comprehensive study of Convergent and Commutative Replicated Data Types. + * A comprehensive study of Convergent and Commutative Replicated Data Types. * This is more space efficient and doesn't accumulate garbage for removed elements. * It is described in the paper - * An optimized conflict-free replicated set + * An optimized conflict-free replicated set * The implementation is inspired by the Riak DT * riak_dt_orswot. * diff --git a/scripts/link-validator.conf b/scripts/link-validator.conf index 62e004b5346..5bc38765553 100644 --- a/scripts/link-validator.conf +++ b/scripts/link-validator.conf @@ -82,60 +82,5 @@ site-link-validator { "http://www.tom-e-white.com/2007/11/consistent-hashing.html" # generated by @apidoc "http://www.scala-lang.org/api/2.13." - # following links are generated by sbt-license-report - "http://apache.org/licenses/LICENSE-2.0" - "http://asm.objectweb.org/license.html" - "http://asm.ow2.io/" - "http://beust.com/jcommander" - "http://bnd.bndtools.org" - "http://code.google.com/p/atinject/" - "http://code.google.com/p/snakeyaml/" - "http://commons.apache.org/lang/" - "http://commons.apache.org/math/" - "http://commons.apache.org/proper/commons-io/" - "http://commons.apache.org/proper/commons-logging/" - "http://commons.apache.org/proper/commons-math/" - "http://creativecommons.org/publicdomain/zero/1.0/" - "http://findbugs.sourceforge.net" - "http://glassfish.java.net/public/CDDL+GPL_1_1.html" - "http://hc.apache.org/httpcomponents-client" - "http://hc.apache.org/httpcomponents-core-ga" - "http://hdrhistogram.github.io/HdrHistogram/" - "http://incubator.apache.org/projects/htrace.html" - "http://jackson.codehaus.org" - "http://java.sun.com/products/javabeans/jaf/index.jsp" - "http://jax-rs-spec.java.net" - "http://jcp.org/en/jsr/detail?id=250" - "http://jopt-simple.github.io" - "http://junit.org" - "http://kamon.io" - "http://latencyutils.github.io/LatencyUtils/" - "http://netty.io/" - "http://objenesis.org" - "http://openjdk.java.net/legal/gplv2+ce.html" - "http://opensource.org" - "http://pholser.github.com/jopt-simple" - "http://pojosr.googlecode.com" - "http://team.ops4j.org/wiki/display/ops4j/Tinybundles" - "http://testng.org" - "http://webjars.org" - "http://www-128.ibm.com/developerworks/library/os-cpl.html" - "http://www.apache.org/licenses/" - "http://www.bouncycastle.org/java.html" - "http://www.bouncycastle.org/licence.html" - "http://www.eclipse.org/legal/epl-v10.html" - "http://www.gnu.org/licenses/lgpl.txt" - "http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html" - "http://www.javassist.org/" - "http://www.mozilla.org/MPL/MPL-1.1.html" - "http://www.opensource.org/licenses/" - "http://www.osgi.org" - "http://www.reactive-streams.org/" - "http://www.scala-lang.org/" - "http://www.scala-sbt.org" - "http://www.scalacheck.org" - "http://www.scalatest.org" - "http://www.slf4j.org" - "http://www.eclipse.org/org/documents/edl-v10.php" ] } diff --git a/testkit/src/test/scala/org/apache/pekko/testkit/metrics/MetricsKit.scala b/testkit/src/test/scala/org/apache/pekko/testkit/metrics/MetricsKit.scala index 2b8f5852052..4fccefcf1b3 100644 --- a/testkit/src/test/scala/org/apache/pekko/testkit/metrics/MetricsKit.scala +++ b/testkit/src/test/scala/org/apache/pekko/testkit/metrics/MetricsKit.scala @@ -32,7 +32,7 @@ import pekko.testkit.metrics.reporter.PekkoConsoleReporter * Allows to easily measure performance / memory / file descriptor use in tests. * * WARNING: This trait should not be seen as utility for micro-benchmarking, - * please refer to JMH if that's what you're writing. + * please refer to JMH if that's what you're writing. * This trait instead aims to give an high level overview as well as data for trend-analysis of long running tests. * * Reporting defaults to `ConsoleReporter`.