|
7 | 7 | import io.sentry.util.AutoClosableReentrantLock; |
8 | 8 | import io.sentry.util.Objects; |
9 | 9 | import io.sentry.util.SpanUtils; |
10 | | -import java.util.ArrayList; |
11 | 10 | import java.util.List; |
12 | 11 | import java.util.ListIterator; |
13 | 12 | import java.util.Map; |
@@ -155,7 +154,10 @@ private void onDeadlineTimeoutReached() { |
155 | 154 | // abort all child-spans first, this ensures the transaction can be finished, |
156 | 155 | // even if waitForChildren is true |
157 | 156 | // iterate in reverse order to ensure leaf spans are processed before their parents |
158 | | - @NotNull final ListIterator<Span> iterator = children.listIterator(children.size()); |
| 157 | + @NotNull final ListIterator<Span> iterator = this.children.listIterator(); |
| 158 | + while (iterator.hasNext()) { |
| 159 | + iterator.next(); |
| 160 | + } |
159 | 161 | while (iterator.hasPrevious()) { |
160 | 162 | @NotNull final Span span = iterator.previous(); |
161 | 163 | span.setSpanFinishedCallback(null); |
@@ -677,14 +679,13 @@ private void updateBaggageValues(final @NotNull Baggage baggage) { |
677 | 679 | } |
678 | 680 |
|
679 | 681 | private boolean hasAllChildrenFinished() { |
680 | | - final List<Span> spans = new ArrayList<>(this.children); |
681 | | - if (!spans.isEmpty()) { |
682 | | - for (final Span span : spans) { |
683 | | - // This is used in the spanFinishCallback, when the span isn't finished, but has a finish |
684 | | - // date |
685 | | - if (!span.isFinished() && span.getFinishDate() == null) { |
686 | | - return false; |
687 | | - } |
| 682 | + @NotNull final ListIterator<Span> iterator = this.children.listIterator(); |
| 683 | + while (iterator.hasNext()) { |
| 684 | + @NotNull final Span span = iterator.previous(); |
| 685 | + // This is used in the spanFinishCallback, when the span isn't finished, but has a finish |
| 686 | + // date |
| 687 | + if (!span.isFinished() && span.getFinishDate() == null) { |
| 688 | + return false; |
688 | 689 | } |
689 | 690 | } |
690 | 691 | return true; |
@@ -909,12 +910,14 @@ public void setName(@NotNull String name, @NotNull TransactionNameSource transac |
909 | 910 |
|
910 | 911 | @Override |
911 | 912 | public @Nullable ISpan getLatestActiveSpan() { |
912 | | - final List<Span> spans = new ArrayList<>(this.children); |
913 | | - if (!spans.isEmpty()) { |
914 | | - for (int i = spans.size() - 1; i >= 0; i--) { |
915 | | - if (!spans.get(i).isFinished()) { |
916 | | - return spans.get(i); |
917 | | - } |
| 913 | + @NotNull final ListIterator<Span> iterator = this.children.listIterator(); |
| 914 | + while (iterator.hasNext()) { |
| 915 | + iterator.next(); |
| 916 | + } |
| 917 | + while (iterator.hasPrevious()) { |
| 918 | + @NotNull final Span span = iterator.previous(); |
| 919 | + if (!span.isFinished()) { |
| 920 | + return span; |
918 | 921 | } |
919 | 922 | } |
920 | 923 | return null; |
|
0 commit comments