Improve docs and add error log related to illegal activation of transaction
Maintainer thường phản hồi trong vòng 1 ngày
Đánh giá
- Độ khó
- 2/5
- Thời gian dự kiến
- 1-3 giờ
- Mức phù hợp với người mới
- 68/100
- Loại issue
- Lỗi
- Độ rõ ràng
- Khá rõ ràng
- Mức độ hoạt động
- Sôi nổi
- Công nghệ
- java
- Lĩnh vực
- backend, observability-sre
Hướng nghiên cứu
Bắt đầu trong ElasticApmTracer.java, so sánh activate() với currentTransaction() và cách duyệt Deque được các phương thức liên quan sử dụng. Tái hiện trường hợp giao dịch lồng nhau, cập nhật hành vi tra cứu và thêm tài liệu được yêu cầu cùng log lỗi kích hoạt không hợp lệ. Hoàn tất khi giao dịch đang hoạt động mới nhất được trả về và hành vi liên quan được bao phủ bằng việc xác minh.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
Using multiple nested transactions, ElasticApm.currentTransaction() returns oldest transaction instead of newest created.
Activating a transaction transaction.activate() pushes the transaction to the head of the active stack:
ElasticApmTracer.java:
public void activate(TraceContextHolder<?> holder) {
if (logger.isDebugEnabled()) {
logger.debug("Activating {} on thread {}", holder, Thread.currentThread().getId());
}
((Deque)this.activeStack.get()).push(holder);
}
But when retrieving it, the last element of the stack is checked:
ElasticApmTracer.java:
public Transaction currentTransaction() {
TraceContextHolder<?> bottomOfStack = (TraceContextHolder)((Deque)this.activeStack.get()).peekLast();
if (bottomOfStack instanceof Transaction) {
return (Transaction)bottomOfStack;
....................
In the above method, peekLast() returns the oldest transaction instead of newly pushed one.
As multiple methods use Deque::peek(first element) to get active transaction, the logic inside currentTransaction() method should be change to iterate from first to last element:
@Nullable
public Transaction currentTransaction() {
- TraceContextHolder<?> bottomOfStack = (TraceContextHolder)((Deque)this.activeStack.get()).peekLast();
+ TraceContextHolder<?> bottomOfStack = (TraceContextHolder)((Deque)this.activeStack.get()).peek();
if (bottomOfStack instanceof Transaction) {
return (Transaction)bottomOfStack;
} else {
- Iterator it = ((Deque)this.activeStack.get()).descendingIterator();
+ Iterator it = ((Deque)this.activeStack.get()).iterator();
TraceContextHolder context;
do {
elastic-apm-agent-1.9.0
- Ngôn ngữ chính
- Java
- Star
- 593
- Fork
- 337
- Merge trung bình
- 15 giờ 24 phút
- Pull request đã merge (30 ngày)
- 15
Chuẩn bị môi trường
- Có Dockerfile hoặc tệp Docker Compose
- Có mẫu pull request
- Đọc hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của elastic/apm-agent-java
-
agent-java
Độ khó 2/5 1-2 ngày Mức phù hợp với người mới 62/100
elastic/apm-agent-java#2844 · 2 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Custom HttpURLConnection throwing unchecked exception can stall the agentCó thể đã có người làm @jackshirazi đã nhận 1 ngày trước. Đang mởagent-java bug
elastic/apm-agent-java#4590 · 1 người được giao ·
Maintainer thường phản hồi trong vòng 1 ngày
-
agent-java community triage
elastic/apm-agent-java#4573 · 4 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
agent-java
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 55/100
elastic/apm-agent-java#4549 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
UnsupportedOperationException at startup when using JDK 26+Có thể đã có người làm @mvanhorn đã nhận 28 ngày trước. Đang mởagent-java bug
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 48/100
elastic/apm-agent-java#4519 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
Tất cả issue của elastic/apm-agent-java
Issue tương tự
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 74/100
apache/rocketmq-dashboard#5784 ·
Maintainer thường phản hồi trong vòng 3 ngày
-
[i18n] 安装实例完成后的成功提示未正确本地化Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 62/100
PCL-Community/PCL-CE#3658 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
Maintainer thường phản hồi trong vòng 1 ngày
-
Team/Identity Server Core Type/Improvement U2
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 62/100
wso2/product-is#28553 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
[Feature]: Page CreationĐang mởfrontend
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 72/100
Paul-Austin-Oswego-CSC480-HCI521/gift-app#116 ·
Maintainer thường phản hồi trong vòng 2 ngày