reactor-core/src/main/java/reactor/core/publisher/Mono.java
public final Mono<T> checkpoint(@Nullable String description, boolean forceStackTrace) {
		final AssemblySnapshot stacktrace;
		if (!forceStackTrace) {
			stacktrace = new AssemblyLightSnapshot(description);
		}
		else {
			stacktrace = new AssemblySnapshot(description, Traces.callSiteSupplierFactory.get());
		}

		return new MonoOnAssembly<>(this, stacktrace);
	}
public final Mono<T> checkpoint(@Nullable String description, boolean forceStackTrace) {
		final AssemblySnapshot stacktrace;
		if (!forceStackTrace) {
			stacktrace = new AssemblyLightSnapshot(description);
		}
		else {
			stacktrace = new AssemblySnapshot(description, Traces.callSiteSupplierFactory.get());
		}

		return new MonoOnAssembly<>(this, stacktrace);
	}
Activate assembly tracing or the lighter assembly marking depending on the
{@code forceStackTrace} option.
<p>
By setting the {@code forceStackTrace} parameter to {@literal true}, activate assembly
tracing for this particular {@link Mono} and give it a description that
will be reflected in the assembly traceback in case of an error upstream of the
checkpoint. Note that unlike {@link #checkpoint(String)}, this will incur
the cost of an exception stack trace creation. The description could for
example be a meaningful name for the assembled mono or a wider correlation ID,
since the stack trace will always provide enough information to locate where this
Flux was assembled.
<p>
By setting {@code forceStackTrace} to {@literal false}, behaves like
{@link #checkpoint(String)} and is subject to the same caveat in choosing the
description.
<p>
It should be placed towards the end of the reactive chain, as errors
triggered downstream of it cannot be observed and augmented with assembly marker.

@param description a description (must be unique enough if forceStackTrace is set
to false).
@param forceStackTrace false to make a light checkpoint without a stacktrace, true
to use a stack trace.
@return the assembly marked {@link Mono}.