"Fossies" - the Fresh Open Source Software Archive  

Source code changes of the file "spring-core/src/main/java/org/springframework/core/metrics/jfr/FlightRecorderApplicationStartup.java" between
spring-framework-5.3.7.tar.gz and spring-framework-5.3.8.tar.gz

About: Spring Framework is an application framework for the Java platform and .NET Framework. Community edition.

FlightRecorderApplicationStartup.java  (spring-framework-5.3.7):FlightRecorderApplicationStartup.java  (spring-framework-5.3.8)
/* /*
* Copyright 2002-2020 the original author or authors. * Copyright 2002-2021 the original author or authors.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
* You may obtain a copy of the License at * You may obtain a copy of the License at
* *
* https://www.apache.org/licenses/LICENSE-2.0 * https://www.apache.org/licenses/LICENSE-2.0
* *
* Unless required by applicable law or agreed to in writing, software * Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, * distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and * See the License for the specific language governing permissions and
* limitations under the License. * limitations under the License.
*/ */
package org.springframework.core.metrics.jfr; package org.springframework.core.metrics.jfr;
import java.util.ArrayDeque;
import java.util.Deque; import java.util.Deque;
import java.util.concurrent.ConcurrentLinkedDeque;
import java.util.concurrent.atomic.AtomicLong;
import org.springframework.core.metrics.ApplicationStartup; import org.springframework.core.metrics.ApplicationStartup;
import org.springframework.core.metrics.StartupStep; import org.springframework.core.metrics.StartupStep;
/** /**
* {@link ApplicationStartup} implementation for the Java Flight Recorder. * {@link ApplicationStartup} implementation for the Java Flight Recorder.
* <p>This variant records {@link StartupStep} as Flight Recorder events. Becaus e * <p>This variant records {@link StartupStep} as Flight Recorder events. Becaus e
* such events only support base types, the * such events only support base types, the
* {@link org.springframework.core.metrics.StartupStep.Tags} are serialized as a * {@link org.springframework.core.metrics.StartupStep.Tags} are serialized as a
* single String attribute. * single String attribute.
* <p>Once this is configured on the application context, you can record data by * <p>Once this is configured on the application context, you can record data by
* launching the application with recording enabled: * launching the application with recording enabled:
* {@code java -XX:StartFlightRecording:filename=recording.jfr,duration=10s -jar app.jar}. * {@code java -XX:StartFlightRecording:filename=recording.jfr,duration=10s -jar app.jar}.
* *
* @author Brian Clozel * @author Brian Clozel
* @since 5.3 * @since 5.3
*/ */
public class FlightRecorderApplicationStartup implements ApplicationStartup { public class FlightRecorderApplicationStartup implements ApplicationStartup {
private long currentSequenceId; private final AtomicLong currentSequenceId = new AtomicLong(0);
private final Deque<Long> currentSteps; private final Deque<Long> currentSteps;
public FlightRecorderApplicationStartup() { public FlightRecorderApplicationStartup() {
this.currentSequenceId = 0; this.currentSteps = new ConcurrentLinkedDeque<>();
this.currentSteps = new ArrayDeque<>(); this.currentSteps.offerFirst(this.currentSequenceId.get());
this.currentSteps.offerFirst(0L);
} }
@Override @Override
public StartupStep start(String name) { public StartupStep start(String name) {
FlightRecorderStartupStep step = new FlightRecorderStartupStep(++ long sequenceId = this.currentSequenceId.incrementAndGet();
this.currentSequenceId, name, this.currentSteps.offerFirst(sequenceId);
this.currentSteps.getFirst(), committedStep -> th return new FlightRecorderStartupStep(sequenceId, name,
is.currentSteps.removeFirst()); this.currentSteps.getFirst(), committedStep -> th
this.currentSteps.offerFirst(this.currentSequenceId); is.currentSteps.removeFirstOccurrence(sequenceId));
return step;
} }
} }
 End of changes. 6 change blocks. 
12 lines changed or deleted 11 lines changed or added

Home  |  About  |  Features  |  All  |  Newest  |  Dox  |  Diffs  |  RSS Feeds  |  Screenshots  |  Comments  |  Imprint  |  Privacy  |  HTTP(S)