-
Notifications
You must be signed in to change notification settings - Fork 1.1k
fix(storage): fix junit-vintage-engine dependencies in gapic-google-cloud-storage-v2 #13234
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change | ||||
|---|---|---|---|---|---|---|
|
|
@@ -18,8 +18,14 @@ | |||||
|
|
||||||
| import com.google.cloud.opentelemetry.propagators.XCloudTraceContextPropagator; | ||||||
| import com.google.cloud.opentelemetry.trace.TraceExporter; | ||||||
| import com.google.cloud.storage.Blob; | ||||||
| import com.google.cloud.storage.Bucket; | ||||||
| import com.google.cloud.storage.BlobId; | ||||||
| import com.google.cloud.storage.BlobInfo; | ||||||
| import com.google.api.gax.paging.Page; | ||||||
| import com.google.cloud.storage.Storage; | ||||||
| import com.google.cloud.storage.StorageOptions; | ||||||
| import com.google.cloud.storage.GrpcStorageOptions; | ||||||
| import io.opentelemetry.api.trace.propagation.W3CTraceContextPropagator; | ||||||
| import io.opentelemetry.context.propagation.ContextPropagators; | ||||||
| import io.opentelemetry.context.propagation.TextMapPropagator; | ||||||
|
|
@@ -28,31 +34,86 @@ | |||||
| import io.opentelemetry.sdk.trace.export.BatchSpanProcessor; | ||||||
| import io.opentelemetry.sdk.trace.export.SpanExporter; | ||||||
| import io.opentelemetry.sdk.trace.samplers.Sampler; | ||||||
| import io.opentelemetry.api.common.Attributes; | ||||||
| import io.opentelemetry.sdk.resources.Resource; | ||||||
| import io.opentelemetry.semconv.ResourceAttributes; | ||||||
|
|
||||||
| // [START storage_enable_otel_tracing] | ||||||
| public class QuickstartOpenTelemetrySample { | ||||||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. |
||||||
| public static void main(String... args) throws Exception { | ||||||
| SpanExporter spanExporter = TraceExporter.createWithDefaultConfiguration(); | ||||||
| TextMapPropagator propagators = | ||||||
| TextMapPropagator.composite( | ||||||
| W3CTraceContextPropagator.getInstance(), | ||||||
| new XCloudTraceContextPropagator(/* oneway= */ true)); | ||||||
|
|
||||||
| OpenTelemetrySdk openTelemetry = | ||||||
| OpenTelemetrySdk.builder() | ||||||
| .setPropagators(ContextPropagators.create(propagators)) | ||||||
| .setTracerProvider( | ||||||
| SdkTracerProvider.builder() | ||||||
| // Sample Rate is set to alwaysOn | ||||||
| // It is recommended to sample based on a ratio for standard use ie. | ||||||
| // .setSampler(Sampler.traceIdRatioBased(0.2)) // sample only 20% of trace ids | ||||||
| .setSampler(Sampler.alwaysOn()) | ||||||
| .addSpanProcessor(BatchSpanProcessor.builder(spanExporter).build()) | ||||||
| .build()) | ||||||
| .build(); | ||||||
| StorageOptions options = StorageOptions.newBuilder().setOpenTelemetry(openTelemetry).build(); | ||||||
| Storage storage = options.getService(); | ||||||
| System.out.println("Created an instance of storage with OpenTelemetry configured"); | ||||||
| } | ||||||
| public static void main(String... args) throws Exception { | ||||||
| SpanExporter spanExporter = new SpanExporter() { | ||||||
| @Override | ||||||
| public io.opentelemetry.sdk.common.CompletableResultCode export(java.util.Collection<io.opentelemetry.sdk.trace.data.SpanData> spans) { | ||||||
| for (io.opentelemetry.sdk.trace.data.SpanData span : spans) { | ||||||
| System.out.println("\n=== SPAN EXPORTED: " + span.getName() + " ==="); | ||||||
| span.getAttributes().forEach((key, val) -> System.out.println(" " + key.getKey() + " = " + val)); | ||||||
| } | ||||||
| return io.opentelemetry.sdk.common.CompletableResultCode.ofSuccess(); | ||||||
| } | ||||||
|
|
||||||
| @Override | ||||||
| public io.opentelemetry.sdk.common.CompletableResultCode flush() { | ||||||
| return io.opentelemetry.sdk.common.CompletableResultCode.ofSuccess(); | ||||||
| } | ||||||
|
|
||||||
| @Override | ||||||
| public io.opentelemetry.sdk.common.CompletableResultCode shutdown() { | ||||||
| return io.opentelemetry.sdk.common.CompletableResultCode.ofSuccess(); | ||||||
| } | ||||||
| }; | ||||||
| SpanExporter cloudTraceExporter = TraceExporter.createWithDefaultConfiguration(); | ||||||
| TextMapPropagator propagators = | ||||||
| TextMapPropagator.composite( | ||||||
| W3CTraceContextPropagator.getInstance(), | ||||||
| new XCloudTraceContextPropagator(/* oneway= */ true)); | ||||||
| Resource resource = Resource.getDefault().merge( | ||||||
| Resource.create(Attributes.of(ResourceAttributes.SERVICE_NAME, "gcs-java-quickstart"))); | ||||||
| OpenTelemetrySdk openTelemetry = | ||||||
| OpenTelemetrySdk.builder() | ||||||
| .setPropagators(ContextPropagators.create(propagators)) | ||||||
| .setTracerProvider( | ||||||
| SdkTracerProvider.builder() | ||||||
| // Sample Rate is set to alwaysOn | ||||||
| // It is recommended to sample based on a ratio for standard use ie. | ||||||
| // .setSampler(Sampler.traceIdRatioBased(0.2)) // sample only 20% of trace ids | ||||||
| .setResource(resource) | ||||||
| .setSampler(Sampler.alwaysOn()) | ||||||
| .addSpanProcessor(BatchSpanProcessor.builder(spanExporter).build()) | ||||||
| .addSpanProcessor(BatchSpanProcessor.builder(cloudTraceExporter).build()) | ||||||
| .build()) | ||||||
| .build(); | ||||||
| StorageOptions options = StorageOptions.newBuilder().setProjectId("nidhi-consumer").setOpenTelemetry(openTelemetry).build(); | ||||||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Avoid hardcoding project IDs like "nidhi-consumer" in sample code. Use
Suggested change
|
||||||
| Storage storage = options.getService(); | ||||||
| try { | ||||||
| System.out.println("Created an instance of storage with OpenTelemetry configured"); | ||||||
| Page<Blob> blobs = storage.list("nidhi-test-02"); | ||||||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. |
||||||
|
|
||||||
| for (Blob blob : blobs.iterateAll()) { | ||||||
| System.out.println(blob.getName()); | ||||||
| } | ||||||
|
|
||||||
| storage.create(BlobInfo.newBuilder(BlobId.of("nidhi-test-02", "testing-spans")).setContentType("text/plain").build(), "test".getBytes()); | ||||||
| storage.create( | ||||||
| BlobInfo.newBuilder(BlobId.of("nidhi-test-03", "testing-spans-2")).setContentType("text/plain").build(), | ||||||
| "test2".getBytes()); | ||||||
|
|
||||||
| // Allow background layout fetch to complete | ||||||
| Thread.sleep(500); | ||||||
| Bucket bucket = storage.get("nidhi-test-080808080808080"); | ||||||
| // storage.list("test"); | ||||||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. |
||||||
| Blob blob = storage.get(BlobId.of("nidhi-test-080808080808080", "testing-spans")); | ||||||
| storage.list("nidhi-test-0808080808080"); | ||||||
| // System.out.println(blob.getName()); | ||||||
| // System.out.println(blob.getBucket()); | ||||||
| storage.list(bucket.getName()); | ||||||
| } | ||||||
| catch (Exception e) { | ||||||
|
|
||||||
| } | ||||||
|
Comment on lines
+110
to
+112
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Swallowing exceptions is dangerous. Specifically, for InterruptedException, you must restore the thread's interrupted status by calling Thread.currentThread().interrupt() and handle the interruption appropriately. catch (InterruptedException e) {
Thread.currentThread().interrupt();
throw new RuntimeException("Operation interrupted", e);
} catch (Exception e) {
throw new RuntimeException(e);
}References
|
||||||
| finally { | ||||||
| storage.close(); | ||||||
| openTelemetry.getSdkTracerProvider().forceFlush().join(10, java.util.concurrent.TimeUnit.SECONDS); | ||||||
| } | ||||||
| } | ||||||
| } | ||||||
| // [END storage_enable_otel_tracing] | ||||||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The import
com.google.cloud.storage.GrpcStorageOptionsis unused in this file and should be removed.