Skip to content
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

Make uevent watching mechanism more flexible #1492

Merged
merged 12 commits into from
Apr 7, 2021

Conversation

dgibson
Copy link
Contributor

@dgibson dgibson commented Mar 4, 2021

The way we match devices we're waiting for to uevents is currently pretty sloppy and fragile. See #1484 and #1397.

This is a substantial rework of the uevent matching code to address these problems.

@dgibson dgibson added wip Work in Progress (PR incomplete - needs more work or rework) no-backport-needed labels Mar 4, 2021
@dgibson dgibson self-assigned this Mar 4, 2021
@dgibson dgibson marked this pull request as draft March 4, 2021 03:10
@dgibson
Copy link
Contributor Author

dgibson commented Mar 4, 2021

/test

@dgibson
Copy link
Contributor Author

dgibson commented Mar 11, 2021

/test

@dgibson dgibson force-pushed the uevent branch 2 times, most recently from 624a5b4 to 09ae8f5 Compare March 12, 2021 06:31
@jodh-intel
Copy link
Contributor

If possible, I'd really like to get #1535 landed before this PR since the former is essential for tracing and has been "brewing" for a very long time ;)

@dgibson
Copy link
Contributor Author

dgibson commented Mar 24, 2021

If possible, I'd really like to get #1535 landed before this PR since the former is essential for tracing and has been "brewing" for a very long time ;)

Ok by me. AFAICT it will mean a moderately painful rebase, but I can manage. This one has a bit of work still to do before it's ready to go.

@dgibson
Copy link
Contributor Author

dgibson commented Apr 6, 2021

/test
/test-vfio

Kata 1.x had a testcase for the equivalent getDeviceName function in Go,
this adapts it to Rust and adds it to Kata 2.x.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
@dgibson
Copy link
Contributor Author

dgibson commented Apr 6, 2021

/retest-ubuntu

@dgibson dgibson marked this pull request as ready for review April 6, 2021 05:38
@dgibson
Copy link
Contributor Author

dgibson commented Apr 6, 2021

/test

@dgibson
Copy link
Contributor Author

dgibson commented Apr 6, 2021

/test

@dgibson
Copy link
Contributor Author

dgibson commented Apr 6, 2021

/test-ubuntu

The current test_get_device_name(), ported from Kata 1.x doesn't really
reflect how the function is used in practice.  The example path appears
to be for a virtio-blk device, but it's an s390 specific variant, not a
PCI device.  The s390 form isn't actually supported by any of the existing
users of get_device_name().

Change it to a plausible virtio-blk-pci style path to better test how
get_device_name() will actually be used in practice.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
For the case of virtio-blk PCI devices, when matching uevents we create
a pci_p temporary.  However, we build it incorrectly: the dev_addr values
we use for PCI devices are a relative sysfs paths from the PCI root to the
device in question *including an initial /*.  But when we construct pci_p
we add an extra /, meaning the resulting path will *not* match properly.

AFAICT the only reason we got away with this is because in practice the
virtio-blk devices where discovered by the kernel before we looked for them
meaning the loosed matching in get_device_name() was used, rather than the
pci_p logic in handle_block_add_event().

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
In Kata 1.x, both the sysToDevMap and the deviceWatchers are in the sandbox
structure.  For some reason in Kata 2.x, the device watchers have moved to
a separate global variable, GLOBAL_DEVICE_WATCHER.

This is a bad idea: apart from introducing an extra global variable
unnecessarily, it means that Sandbox::pci_device_map and
GLOBAL_DEVICE_WATCHER are protected by separate mutexes.  Since the
information in these two structures has to be kept in sync with each other,
it makes much more sense to keep them both under the same single Sandbox
mutex.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Sandbox::pci_device_map contains a mapping from sysfs paths to /dev entries
which is used by get_device_name() to look up the right /dev node.  But,
the map only supplies the answer if the uevent for the device has already
been received, otherwise get_device_name() has to wait for it.

However the matching for already-received and yet-to-come uevents isn't
quite the same which makes the whole system fragile.

In order to make sure the matching for both cases is identical, we need the
already-received side to store the whole uevent to match against, not just
the sysfs path and device name.

So, rename pci_device_map to uevent_map and store the whole uevent there
verbatim.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Currently, when Uevent::handle_block_add_event() receives an event matching
a registered watcher, it reports the /dev node name from the event back
to the watcher.

This changes it to report the entire uevent, not just the /dev node name.
This will allow various future extensions.  It also makes the client side
of the uevent watching - get_device_name() - more consistent between its
two paths: finding a past uevent in Sandbox::uevent_map() or waiting for
a new uevent via a watcher.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Sandbox:dev_watcher is a HashMap from a "device address" to a channel used
to notify get_device_name() that a suitable uevent has been found.
However, "device address" isn't well defined, having somewhat different
meanings for different device/event types.  We never actually look up this
HashMap by key, except to remove entries.

Not looking up by key suggests that a map is not the appropriate data
structure here.  Furthermore, HashMap imposes limitations on the types
which will prevent some future extensions we want.

So, replace the HashMap with a Vec<Option<>>.  We need the Option<> so that
we can remove entries by index (removing them from the Vec completely would
hange the indices of other entries, possibly breaking concurrent work.

This does mean that the vector will keep growing as we watch for different
events during startup.  However, we don't expect the number of device
events we watch for during a run to be very large, so that shouldn't be
a problem.  We can optimize this later if it becomes a problem.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Uevent::process() is a bit oddly organized.  It treats the onlining of
hotplugged memory as the "default" case, although that's quite specific,
while treating the handling of hotplugged block devices more like a special
case, although that's pretty close to being very general.

Furthermore splitting Uevent::is_block_add_event() from
Uevent::handle_block_add_event() doesn't make a lot of sense, since their
logic is intimately related to each other.

Alter the code to be a bit more sensible: first split on the "action" type
since that's the most fundamental difference, then handle the memory
onlining special case, then the block device add (which will become a lot
more general in future changes).

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
The event matching logic in Uevent::process_add() is split into two parts.
The first checks if we care about the event at all, the second checks
whether the event is relevant to a particular watcher.

However, we're going to be adding more types of watchers in future, which
will make the global filter too restrictive.  Fold the two bits of logic
together into a per-watcher filter function.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
…h list

Currently, Sandbox::uevent_watchers lists uevents to watch for by a
"device address" string.  This is not very clearly defined, and is
matched against events with a rather complex closure created in
Uevent::process_add().

That closure makes a bunch of fragile assumptions about what sort of
events we could ever be interested in.  In some ways it is too
restrictive (requires everything to be a block device), but in others
is not restrictive enough (allows things matching NVDIMM paths, even
if we're looking for a PCI block device).

To allow the clients more precise control over uevent matching, we
define a new UeventMatcher trait with a method to match uevents.  We
then have the atchers list include UeventMatcher trait objects which
are used directly by Uevent::process_add(), instead of constructing
our match directly from dev_addr.

For now we don't actually change the matching function, or even use
multiple different trait implementations, but we'll refine that in
future.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
get_device_name() looks at kernel uevents to work out the device name for
a given PCI (usually) address.  However, when we call it we can't know if
the uevent we're interested in has already happened (in which case it will
have been recorded in Sandbox::uevent_map) or yet to come, in which case
we need to register to watch it.

However, we currently match differently against past and future events.
For past events we simply look for a sysfs path including the address, but
for future events we use a complex bit of logic in the is_match() closure.
Change it to use the exact same matching logic in both cases.

fixes kata-containers#1397

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
get_device_name() contains logic to wait for a specific uevent, then
extract the /dev node name from it.  In future we're going to want similar
logic to wait on uevents, but using different match criteria, or getting
different information out.

To simplify this, add a wait_for_uevent() helper in the uevent module,
which takes an explicit UeventMatcher object and returns the whole uevent
found.

To make testing easier, we also extract the cut down uevent watcher from
test_get_device_name() into a new spawn_test_watcher() helper.  Its used
for both test_get_device_name() and a new test_wait_for_uevent() amd will
be useful for more tests in future.

fixes kata-containers#1484

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
@dgibson
Copy link
Contributor Author

dgibson commented Apr 6, 2021

/test

@dgibson
Copy link
Contributor Author

dgibson commented Apr 6, 2021

/retest-ubuntu

@dgibson dgibson removed the wip Work in Progress (PR incomplete - needs more work or rework) label Apr 7, 2021
@dgibson dgibson changed the title WIP: Rework Uevent watching mechanism Make uevent watching mechanism more flexible Apr 7, 2021
Copy link

@devimc devimc left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

thanks @dgibson

@GabyCT GabyCT merged commit 81bcded into kata-containers:main Apr 7, 2021
@dgibson dgibson deleted the uevent branch April 8, 2021 01:13
cmaf added a commit to cmaf/kata-containers that referenced this pull request Sep 8, 2021
Update OpenTelemetry from v0.15.0 to v0.20.0.

    Git log

    02d8bdd5 Release v0.20.0 (kata-containers#1837)
    aa66fe75 OS and Process resource detectors (kata-containers#1788)
    7374d679 Fix Links documents (kata-containers#1835)
    856f5b84 Add feature request issue template (kata-containers#1831)
    0fdc3d78 Remove bundler from Jaeger exporter (kata-containers#1830)
    738ef11e Fix flaky global ErrorHandler delegation test (kata-containers#1829)
    e43d9c00  Update Default Value for Jaeger Exporter Endpoint  (kata-containers#1824)
    0032bd64 Fix default merging of resource attributes from environment variable (kata-containers#1785)
    96c5e4ba Add SpanProcessor example for Span annotation on start (kata-containers#1733)
    543c8144 Remove the WithSDKOptions from the Jaeger exporter (kata-containers#1825)
    66389ad6 Update function docs in sdk.go (kata-containers#1826)
    70bc9eb3 Adds support for timeout on the otlp/gRPC exporter (kata-containers#1821)
    081cc61d Update Jaeger exporter convenience functions (kata-containers#1822)
    1b9f16d3 Remove the WithDisabled option from Jaeger exporter (kata-containers#1806)
    6867faa0 Bump actions/cache from v2.1.4 to v2.1.5 (kata-containers#1818)
    a2bf04dc Build context pipeline in Jaeger upload process (kata-containers#1809)
    2de86f23 Remove locking from Jaeger exporter shutdown/export (kata-containers#1807)
    4f9fec29 Add ExportSpans benchmark to Jaeger exporter (kata-containers#1805)
    d9566abe Fix OTLP testing flake: signal connection from mock collector (kata-containers#1816)
    a2cecb6e add support for env var configuration to otlp/gRPC (kata-containers#1811)
    d616df61 Fix flaky OTLP exporter reconnect test (kata-containers#1814)
    b09df84a Changes stdout to expose the `*sdktrace.TracerProvider` (kata-containers#1800)
    04890608 Remove options field from Jaeger exporter (kata-containers#1808)
    6db20e00 Remove the abandoned Process struct in Jaeger exporter (kata-containers#1804)
    086abf34 docs: use test example to document prometheus.InstallNewPipeline (kata-containers#1796)
    d0cea04b Bump google.golang.org/api from 0.43.0 to 0.44.0 in /exporters/trace/jaeger (kata-containers#1792)
    99c477fe Fixed typo for default service name in Jaeger Exporter (kata-containers#1797)
    95fd8f50 Bump google.golang.org/grpc from 1.36.1 to 1.37.0 in /exporters/otlp (kata-containers#1791)
    9b251644 Zipkin Exporter: Use default resouce's serviceName as default serivce name (kata-containers#1777) (kata-containers#1786)
    4d141e47 Add k8s.node.name and k8s.node.uid to semconv (kata-containers#1789)
    5c99a34c Fix golint issue caused by incorrect comment (kata-containers#1795)
    c5d006c0 Update Jaeger environment variables (kata-containers#1752)
    58432808 add NewExportPipeline and InstallNewPipeline for otlp (kata-containers#1373)
    7d8e6bd7 Zipkin Exporter: Adjust span transformation to comply with the spec (kata-containers#1688)
    2817c091 Merge sdk/export/trace into sdk/trace (kata-containers#1778)
    c61e654c Refactor prometheus exporter tests to match file headers as well (kata-containers#1470)
    23422c56 Remove process config for Jaeger exporter (kata-containers#1776)
    0d49b592 Add test to check bsp ignores `OnEnd` and `ForceFlush` post Shutdown` (kata-containers#1772)
    e9aaa04b Record links/events attribute drops independently (kata-containers#1771)
    5bbfc22c Make ExportSpans for Jaeger Exporter honor deadline (kata-containers#1773)
    0786fe32 Add Bug report issue templates (kata-containers#1775)
    3c7facee Add `ExportTimeout` option to batch span processor (kata-containers#1755)
    c6b92d5b Make TraceFlags spec-compliant (kata-containers#1770)
    ee687ca5 Bump github.com/itchyny/gojq from 0.12.2 to 0.12.3 in /internal/tools (kata-containers#1774)
    52a24774 add support for configuring tls certs via env var to otlp/HTTP (kata-containers#1769)
    35cfbc7e Update precedence of event name in Jaeger exporter (kata-containers#1768)
    33699d24 Adds semantic conventions for exceptions (kata-containers#1492)
    928e3c38 Modify ForceFlush to abort after timeout/cancellation (kata-containers#1757)
    3947cab4 Fix testCollectorEndpoint typo and add tag assertions in jaeger_test (kata-containers#1753)
    ecc635dc add website docs (kata-containers#1747)
    07a8d195 Fix Jaeger span status reporting and unify tag keys (kata-containers#1761)
    4fa35c90 add partial support for env var config to otlp/HTTP (kata-containers#1758)
    bf180d0f improve OTLP/gRPC connection errors (kata-containers#1737)
    d575865b Fix span IsRecording when not sampling (kata-containers#1750)
    20c93b01 Update SamplingParameters (kata-containers#1749)
    97501a3f Update SpanSnapshot to use parent SpanContext (kata-containers#1748)
    604b05cb Store current Span instead of local and remote SpanContext in context.Context (kata-containers#1731)
    c61f4b6d Set @lizthegrey to emeritus status (kata-containers#1745)
    b1342fec Bump github.com/golangci/golangci-lint in /internal/tools (kata-containers#1743)
    54e1bd19 Bump google.golang.org/api from 0.41.0 to 0.43.0 in /exporters/trace/jaeger (kata-containers#1741)
    4d25b6a2 Bump github.com/prometheus/client_golang from 1.9.0 to 1.10.0 in /exporters/metric/prometheus (kata-containers#1740)
    0a47b66f Bump google.golang.org/grpc from 1.36.0 to 1.36.1 in /exporters/otlp (kata-containers#1739)
    26f006b8 Reinstate @paivagustavo as an Approver (kata-containers#1734)
    382c7ced Remove hasRemoteParent field from SDK span (kata-containers#1728)
    862a5a68 Remove setting error status while recording error with Span from oteltest package (kata-containers#1729)
    6defcfdf Remove links on NewRoot spans (kata-containers#1726)
    a9b2f851 upgrade thrift to v0.14.1 in jaeger exporter (kata-containers#1712)
    5a6a854d Bump google.golang.org/protobuf from 1.25.0 to 1.26.0 in /exporters/otlp (kata-containers#1724)
    23486213 Migrate to using go.opentelemetry.io/proto/otlp (kata-containers#1713)
    5d559b40 Remove makeSamplingDecision func (kata-containers#1711)
    e24702da Update the TraceContext.Extract docs (kata-containers#1720)
    9d4eb1f6 Update dates in CHANGELOG.md for 2021 releases (kata-containers#1723)
    2b4fa968 Release v0.19.0 (kata-containers#1710)
    4beb7041 sdk/trace: removing ApplyConfig and Config (kata-containers#1693)
    1d42be16 Rename WithDefaultSampler TracerProvider option to WithSampler and update docs (kata-containers#1702)
    860d5d86 Add flag to determine whether SpanContext is remote (kata-containers#1701)
    0fe65e6b Comply with OpenTelemetry attributes specification (kata-containers#1703)
    88884351 Bump google.golang.org/api from 0.40.0 to 0.41.0 in /exporters/trace/jaeger (kata-containers#1700)
    345f264a breaking(zipkin): removes servicName from zipkin exporter. (kata-containers#1697)
    62cbf0f2 Populate Jaeger's Span.Process from Resource (kata-containers#1673)
    28eaaa9a Add a test to prove the Tracer is safe for concurrent calls (kata-containers#1665)
    8b1be11a Rename resource pkg label vars and methods (kata-containers#1692)
    a1539d44 OpenCensus metric exporter bridge (kata-containers#1444)
    77aa218d Fix issue kata-containers#1490, apply same logic as in the SDK (kata-containers#1687)
    9d3416cc Fix synchronization issues in global trace delegate implementation (kata-containers#1686)
    58f69f09 Span status from HTTP code: Do not set status message if it can be inferred (kata-containers#1681)
    9c305bde Flush metric events prior to shutdown in OTLP example (kata-containers#1678)
    66b1135a Fix CHANGELOG (kata-containers#1680)
    90bd4ab5 Update employer information for maintainers (kata-containers#1683)
    36841913 Remove WithRecord() option from trace.SpanOption when starting a span (kata-containers#1660)
    65c7de20 Remove trace prefix from NoOp src files. (kata-containers#1679)
    e88a091a Make SpanContext Immutable (kata-containers#1573)
    d75e2680 Avoid overriding configuration of tracer provider (kata-containers#1633)
    2b4d5ac3 Bump github.com/golangci/golangci-lint in /internal/tools (kata-containers#1671)
    150b868d Bump github.com/google/go-cmp from 0.5.4 to 0.5.5 (kata-containers#1667)
    76aa924e Fix the examples target info messaging (kata-containers#1676)
    a3aa9fda Bump github.com/itchyny/gojq from 0.12.1 to 0.12.2 in /internal/tools (kata-containers#1672)
    a5edd79e Removed setting error status while recording err as span event (kata-containers#1663)
    e9814758 chore(zipkin): improves zipkin example to not to depend on timeouts. (kata-containers#1566)
    3dc91f2d Add ForceFlush method to TracerProvider (kata-containers#1608)
    bd0bba43 exporter: swap pusher for exporter (kata-containers#1656)
    56904859 Update the SimpleSpanProcessor (kata-containers#1612)
    a7f7abac  SpanStatus description set only when status code is set to Error (kata-containers#1662)
    05252f40 Jaeger Exporter: Fix minor mapping discrepancies (kata-containers#1626)
    238e7c61 Add non-empty string check for attribute keys (kata-containers#1659)
    e9b9aca8 Add tests for propagation of Sampler Tracestate changes (kata-containers#1655)
    875a2583 Add docs on when reviews should be cleared (kata-containers#1556)
    7153ef2d Add HTTP/JSON to the otlp exporter (kata-containers#1586)
    62e2a0f7 Unexport the simple and batch SpanProcessors (kata-containers#1638)
    992837f1 Add TracerProvider tests to oteltest harness (kata-containers#1607)
    bb4c297e Pre release v0.18.0 (kata-containers#1635)
    712c3dcc Fix makefile ci target and coverage test packages (kata-containers#1634)
    841d2a58 Rename local var new to not collide with builtin (kata-containers#1610)
    13938ab5 Update SpanProcessor docs (kata-containers#1611)
    e25503a0 Add compatibility tests to CI (kata-containers#1567)
    1519d959 Use reasonable interval in sdktrace.WithBatchTimeout (kata-containers#1621)
    7d4496e0 Pass metric labels when transforming to gaugeArray (kata-containers#1570)
    6d4a5e0d Bump google.golang.org/grpc from 1.35.0 to 1.36.0 in /exporters/otlp (kata-containers#1619)
    a93393a0 Bump google.golang.org/grpc in /example/prom-collector (kata-containers#1620)
    e499ca86 Fix validation for tracestate with vendor and add tests (kata-containers#1581)
    43886e52 Make timestamps sequential in lastvalue agg check (kata-containers#1579)
    37688ef6 revent end-users from implementing some interfaces (kata-containers#1575)
    85e696d2 Updating documentation with an working example for creating NewExporter (kata-containers#1513)
    562eb28b Unify the Added sections of the unreleased changes (kata-containers#1580)
    c4cf1aff Fix Windows build of Jaeger tests (kata-containers#1577)
    4a163bea Fix stdout TestStdoutTimestamp failure with sleep (kata-containers#1572)
    bd4701eb Stagger timestamps in exact aggregator tests (kata-containers#1569)
    b94cd4b2 add code attributes to semconv package (kata-containers#1558)
    78c06cef Update docs from gitter to slack for communication (kata-containers#1554)
    1307c911 Remove vendor exclude from license-check (kata-containers#1552)
    5d2636e5 Bump github.com/golangci/golangci-lint in /internal/tools (kata-containers#1565)
    d7aff473 Vendor Thrift dependency (kata-containers#1551)
    298c5a14 Update span limits to conform with OpenTelemetry specification (kata-containers#1535)
    ecf65d79 Rename otel/label -> otel/attribute (kata-containers#1541)
    1b5b6621 Remove resampling on span.SetName (kata-containers#1545)
    8da52996 fix: grpc reconnection  (kata-containers#1521)
    3bce9c97 Add Keys() method to propagation.TextMapCarrier (kata-containers#1544)
    0b1a1c72 Make oteltest.SpanRecorder into a concrete type (kata-containers#1542)
    7d0e3e52 SDK span no modification after ended (kata-containers#1543)
    7de3b58c Remove extra labels types (kata-containers#1314)
    73194e44 Bump google.golang.org/api from 0.39.0 to 0.40.0 in /exporters/trace/jaeger (kata-containers#1536)
    8fae0a64 Create resource.Default() with required attributes/default values (kata-containers#1507)
    76f93422 Release v0.17.0 (kata-containers#1534)
    9b242bc4 Organize API into Go modules based on stability and dependencies (kata-containers#1528)
    e50a1c8c Bump actions/cache from v2 to v2.1.4 (kata-containers#1518)
    a6aa7f00 Bump google.golang.org/api from 0.38.0 to 0.39.0 in /exporters/trace/jaeger (kata-containers#1517)
    38efc875 Code Improvement - Error strings should not be capitalized (kata-containers#1488)
    6b340501 Update default branch name (kata-containers#1505)
    b39fd052 nit: Fix comment to be up-to-date (kata-containers#1510)
    186c2953 Fix golint error of package comment form (kata-containers#1487)
    9308d662 Bump google.golang.org/api from 0.37.0 to 0.38.0 in /exporters/trace/jaeger (kata-containers#1506)
    1952d7b6 Reverse order of attribute precedence when merging two Resources (kata-containers#1501)
    ad7b4715 Remove build flags for runtime/trace support (kata-containers#1498)
    4bf4b690 Remove inaccurate and unnecessary import comment (kata-containers#1481)
    7e19eb6a Bump google.golang.org/api from 0.36.0 to 0.37.0 in /exporters/trace/jaeger (kata-containers#1504)
    c6a4406a Bump github.com/golangci/golangci-lint in /internal/tools (kata-containers#1503)
    9524ac09 Update workflows to include main branch as trigger (kata-containers#1497)
    c066f15e Bump github.com/gogo/protobuf from 1.3.1 to 1.3.2 in /internal/tools (kata-containers#1478)
    894e0240 Bump github.com/golangci/golangci-lint in /internal/tools (kata-containers#1477)
    71ffba39 Bump google.golang.org/grpc from 1.34.0 to 1.35.0 in /exporters/otlp (kata-containers#1471)
    515809a8 Bump github.com/itchyny/gojq from 0.12.0 to 0.12.1 in /internal/tools (kata-containers#1472)
    3e96ad1e gitignore: remove unused example path (kata-containers#1474)
    c5622777 Histogram aggregator functional options (kata-containers#1434)
    0df8cd62 Rename Makefile.proto to avoid interpretation as proto file (kata-containers#1468)
    979ff51f Bump github.com/stretchr/testify from 1.6.1 to 1.7.0 (kata-containers#1453)
    1df8b3b8 Bump github.com/gogo/protobuf from 1.3.1 to 1.3.2 in /exporters/otlp (kata-containers#1456)
    4c30a90a Bump github.com/stretchr/testify from 1.6.1 to 1.7.0 in /sdk (kata-containers#1455)
    5a9f8f6e Bump github.com/stretchr/testify from 1.6.1 to 1.7.0 in /exporters/stdout (kata-containers#1454)
    7786f34c Bump github.com/stretchr/testify from 1.6.1 to 1.7.0 in /exporters/trace/zipkin (kata-containers#1457)
    4352a7a6 Bump github.com/stretchr/testify from 1.6.1 to 1.7.0 in /exporters/otlp (kata-containers#1460)
    6990b3b3 Bump github.com/stretchr/testify from 1.6.1 to 1.7.0 in /exporters/metric/prometheus (kata-containers#1461)
    7af40d22 Bump github.com/stretchr/testify from 1.6.1 to 1.7.0 in /exporters/trace/jaeger (kata-containers#1463)
    f16f1892 Bump google.golang.org/grpc in /example/otel-collector (kata-containers#1465)
    fe363be3 Move Span Event to API (kata-containers#1452)
    43922240 Bump google.golang.org/grpc in /example/prom-collector (kata-containers#1466)
    0aadfb27 Prepare release v0.16.0 (kata-containers#1464)
    207587b6 Metric histogram aggregator: Swap in SynchronizedMove to avoid allocations (kata-containers#1435)
    c29c6fd1 Shutdown underlying span exporter while shutting down BatchSpanProcessor (kata-containers#1443)
    dfece3d2 Combine the Push and Pull metric controllers (kata-containers#1378)
    74deeddd Handle tracestate in TraceContext propagator  (kata-containers#1447)
    49f699d6 Remove Quantile aggregation, DDSketch aggregator; add Exact timestamps (kata-containers#1412)
    9c949411 Rename internal/testing to internal/internaltest (kata-containers#1449)
    8d809814 Move gRPC driver to a subpackage and add an HTTP driver (kata-containers#1420)
    9332af1b Bump github.com/golangci/golangci-lint in /internal/tools (kata-containers#1445)
    5ed96e92 Update exporters/otlp Readme.md (kata-containers#1441)
    bc9cb5e3 Switch CircleCI badge to GitHub Actions (kata-containers#1440)
    716ad082 Remove CircleCI config (kata-containers#1439)
    0682db1e Adding Security Workflows to GitHub Actions (2/2): gosec workflow (kata-containers#1429)
    11f732b8 Adding Security Workflows to GitHub Actions (1/2): codeql workflow (kata-containers#1428)
    40f1c003 Add Tracestate into the SamplingResult struct (kata-containers#1432)
    db06c8d1 Flush metric events before shutdown in collector example (kata-containers#1438)
    f6f458e1 Fix golint issue caused by typo in trace.go (kata-containers#1436)
    fe9d1f7e Use uint64 Count consistently in metric aggregation (kata-containers#1430)
    3a337d0b Bump github.com/golangci/golangci-lint in /internal/tools (kata-containers#1433)
    1e4c8321 cleanup: drop the removed examples in gitignore (kata-containers#1427)
    5c9221cf Unify endpoint API that related to OTel exporter (kata-containers#1401)
    045c3ffe Build scripts: Replace mapfile with read loop for old bash versions (kata-containers#1425)
    2def8c3d Add Versioning Documentation (kata-containers#1388)
    6bcd1085 Bump github.com/itchyny/gojq from 0.11.2 to 0.12.0 in /internal/tools (kata-containers#1424)
    38e76efe Add a split protocol driver for otlp exporter (kata-containers#1418)
    439cd313 Add TraceState to SpanContext in API (kata-containers#1340)
    35215264 Split connection management away from exporter (kata-containers#1369)
    add9d933 Bump github.com/prometheus/client_golang from 1.8.0 to 1.9.0 in /exporters/metric/prometheus (kata-containers#1414)
    93d426a1 Add @dashpole as a project Approver (kata-containers#1410)
    6fe20ef3 Fix small typo (kata-containers#1409)
    b22d0d70 Mention the getting started guide (kata-containers#1406)
    3fb80fb2 Fix duplicate checkout action in GitHub workflow (kata-containers#1407)
    2051927b Correct CI workflow syntax (kata-containers#1403)
    f11a86f7 Fix typo in comment (kata-containers#1402)
    bdf87a78 Migrate CircleCI ci.yml workflow to GitHub Actions (kata-containers#1382)
    4e59dd1f Bump google.golang.org/grpc from 1.32.0 to 1.34.0 in /example/otel-collector (kata-containers#1400)
    83513f70 Bump google.golang.org/api from 0.32.0 to 0.36.0 in /exporters/trace/jaeger (kata-containers#1398)
    a354fc41 Bump github.com/prometheus/client_golang from 1.7.1 to 1.8.0 in /exporters/metric/prometheus (kata-containers#1397)
    3528e42c Bump google.golang.org/grpc from 1.32.0 to 1.34.0 in /exporters/otlp (kata-containers#1396)
    af114baf Call otel.Handle with non-nil errors (kata-containers#1384)
    c3c4273e Add RO/RW span interfaces (kata-containers#1360)

Fixes kata-containers#2591

Signed-off-by: Chelsea Mafrica <chelsea.e.mafrica@intel.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
4 participants