ImmutableContext and ImmutableStructure truncate Instant values to milliseconds
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
- 76/100
Hướng nghiên cứu
Bắt đầu bằng cách đọc Value.clone() và các đường dẫn khởi tạo, đọc của ImmutableStructure được mô tả trong issue. Kiểm tra ImmutableStructureTest.MutatingGetInstantValueShouldNotChangeOriginalValue, hiện đang cắt ngắn đầu vào đến độ chính xác mili giây. Công việc được xem là hoàn tất khi một instant có độ chính xác dưới mili giây được trả về nguyên vẹn qua getValue(key).asInstant(), asMap() và asObjectMap().
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
An Instant stored in an ImmutableStructure or ImmutableContext loses its sub-millisecond precision. getValue(key).asInstant(), asMap() and asObjectMap() return an instant truncated to milliseconds, so the value read back is not equal to the value stored.
Value.clone() copies instants with Instant.ofEpochMilli(instant.toEpochMilli()), and ImmutableStructure clones every value on construction and on each read.
Expected behavior
The stored Instant is returned unchanged. Instant is immutable, so a copy is not needed.
Steps to reproduce
Instant instant = Instant.ofEpochSecond(1_700_000_000L, 123_456_789L);
EvaluationContext ctx = new ImmutableContext(Map.of("t", new Value(instant)));
System.out.println(instant); // 2023-11-14T22:13:20.123456789Z
System.out.println(ctx.getValue("t").asInstant()); // 2023-11-14T22:13:20.123Z
Instant.now() has microsecond or finer resolution on Java 9 and later, so contexts built from Instant.now() are affected in practice. The existing ImmutableStructureTest.MutatingGetInstantValueShouldNotChangeOriginalValue test calls truncatedTo(ChronoUnit.MILLIS) to avoid this.
- Ngôn ngữ chính
- Java
- Star
- 129
- Fork
- 62
- Merge trung bình
- 6 giờ 37 phút
- Pull request đã merge (30 ngày)
- 12
Chuẩn bị môi trường
- Không có Dockerfile hay tệp Docker Compose
- Không 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 open-feature/java-sdk
-
bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
open-feature/java-sdk#2019 · 2 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
perf: avoid creating exceptions when no hook implements the error stageCó thể đã có người làm @toddbaert đã nhận 29 ngày trước. Đang mởenhancement
open-feature/java-sdk#2056 · 1 người được giao ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 48/100
open-feature/java-sdk#2053 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Spec v0.9.0 complianceĐang mởv0.9.0
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 35/100
open-feature/java-sdk#1999 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
on setProvider call, shutting down the previous provider should happen before creating the new oneĐang mở
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 50/100
open-feature/java-sdk#1934 · 1 reaction ·
Maintainer thường phản hồi trong vòng 1 ngày
Tất cả issue của open-feature/java-sdk
Issue tương tự
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 80/100
googleads/googleads-mobile-flutter#1541 ·
Maintainer thường phản hồi trong vòng 4 ngày
-
Keyboard crashes Chrome tabsĐang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 73/100
Julow/Unexpected-Keyboard#1490 ·
Maintainer thường phản hồi trong vòng 4 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 67/100
Vakore/ZappierGames#275 ·
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
unitycatalog/unitycatalog#2148 ·
Maintainer thường phản hồi trong vòng 2 ngày
-
enhancement priority: low
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 92/100
Riptide-Labs/riptide#1060 ·
Maintainer thường phản hồi trong vòng 1 ngày