Skip to content

stats: introduce CustomStatNamespaces.#17357

Merged
mattklein123 merged 46 commits intoenvoyproxy:mainfrom
mathetake:wasm-prometheus-namespace
Sep 13, 2021
Merged

stats: introduce CustomStatNamespaces.#17357
mattklein123 merged 46 commits intoenvoyproxy:mainfrom
mathetake:wasm-prometheus-namespace

Conversation

@mathetake
Copy link
Copy Markdown
Member

@mathetake mathetake commented Jul 15, 2021

This commit adds Stats::CustomStatNamespaces, and the concept of custom stat namespaces used by
extensions and stat sinks. Custom stat namespaces are registered by extensions
via the Stats::CustomStatNamespaces object owned by the API object, and user-defined metrics
created by these extensions are all prefixed by the namespace. For example,
Wasm extension registers "wasmcustom" as a custom stat namespace,
and all the metrics created by user Wasm programs are prefixed by "wasmcustom." internally.
This is mainly for distinguishing these "custom metrics" defined outside Envoy codebase from
the native metrics defined by Envoy codebase, and this way stat sinks are able to determine
how to expose these two kinds of metrics.

Notably this commit fixes #14920 and istio/istio#27635 by making changes to
prometheus stat handler so that it strips the metrics names prefixed
by custom stat namespaces and exposes the stripped ones as-is in the output.
Previously in the prometheus stat handler, Envoy prefixes all the metrics by "envoy_" for those who do not have
the prefixes registered statistically via PrometheusStatsFormatter::registerPrometheusNamespace.
That was not a good UX because, for example, Wasm extension users cannot register their own
prometheus namespaces at runtime and therefore they end up having
all of their own metrics prefixed by "envoy_" unless they have their own Envoy builds.
Consequently, we no longer need the static prometheus namespace registration mechanism,
so this commit also deletes the unneeded API.

Signed-off-by: Takeshi Yoneda takeshi@tetrate.io

@mathetake
Copy link
Copy Markdown
Member Author

@lizan could you take a quick view to see if my approach to thread-safety looks ok? I guess something like "dispatch on main thread" would be another approach rather than taking mutex like this, but I couldn't find the proper way to do that.

Copy link
Copy Markdown
Member

@lizan lizan left a comment

Choose a reason for hiding this comment

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

I'm not keen into this approach, doesn't the wasm foreign function implementation has access to dispatcher?

Comment thread source/server/admin/prometheus_stats.cc Outdated
@mathetake
Copy link
Copy Markdown
Member Author

yeah actually we can access to the main thread dispatcher here. Let me rework later.

@mathetake
Copy link
Copy Markdown
Member Author

mathetake commented Jul 30, 2021

will do after the refactoring work here: proxy-wasm/proxy-wasm-cpp-host#183

@mathetake mathetake requested a review from lizan August 2, 2021 01:30
@mathetake
Copy link
Copy Markdown
Member Author

changed so we dispatch on main, rather than taking locks.

@PiotrSikora
Copy link
Copy Markdown
Contributor

Since the overall goal seems to be avoiding the envoy_ prefix in Wasm metrics, couldn't we automatically do that for all metrics defined in Wasm, instead of adding those implementation-specific hostcalls?

@mathetake
Copy link
Copy Markdown
Member Author

Since the overall goal seems to be avoiding the envoy_ prefix in Wasm metrics, couldn't we automatically do that for all metrics defined in Wasm, instead of adding those implementation-specific hostcalls?

ah that's good point and I think it's better UX. Let me rework.

@mathetake mathetake changed the title wasm: add foreign calls to un/register prometheus namespaces. wasm: register prometheus namespaces for Wasm plugin defined metrics. Aug 3, 2021
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

I don't know enough about the current stats to know for sure, but isn't this too greedy? e.g. if someone defines cluster_foo metric in Wasm, wouldn't it automatically remove envoy_ prefix from all "native" metrics as well?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

yeah that's true.. maybe better have something like "is_native" flag in Metric class, and prefix "envoy_" based on it, rather than using registerPrometheusNamespace?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Yeah, that sounds good to me... although, it seems that such solution was discussed in #11808, but the prefix list was added instead. cc @lizan @mandarjog @ggreenway @jmarantz

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

I'm not familiar with wasm APIs at all, but could you require the plugin to register it's namespace, and clearly document that it should be specific to this plugin and not overlap with any existing native stat names, and that all plugin stats should be under that namespace? There's still the possibility of a plugin incorrectly registering for an incorrect prefix, but there's at least documentation about how to behave correctly to avoid such issues.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

I guess my point is why do we have those "namespaces" in the first place, when in reality it's only about separating native Envoy metrics that append envoy_ prefix from those that don't?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

Sorry I'm on vacation but I noticed this.

Oh sorry to interrupt you, and thanks for taking your time.

If this is really specific to wasm then it seems unclean to put a bit in the general stats structure to handle a special case.

This bit, say "is_custom_metric" flag, will be only set by Wasm for now since afaik Wasn extension is the only extension which defines non-Envoy-native metrics dynamically. But in the future, maybe other extensions would have that ability to define custom metrics.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

ping @jmarantz , wdyt ^^? Do you think the purpose is not worth a bit?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

@mathetake I think that we should do it, using flags to differentiate between Envoy's internal and Wasm/Lua/whatever metrics is much better UX than the need to register and use Prometheus namespaces.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

I'm fine with this.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

OK thank you all, I will rework this PR and add a "is_custom_metric" flag in Metric class to differentiate Envoy native metrics from others.

Comment thread source/server/admin/prometheus_stats.cc Outdated
@lizan lizan added the waiting label Aug 12, 2021
@mathetake mathetake marked this pull request as draft August 23, 2021 14:18
@mathetake mathetake force-pushed the wasm-prometheus-namespace branch from e8b4a24 to a8536dc Compare August 23, 2021 14:58
@mathetake mathetake changed the title wasm: register prometheus namespaces for Wasm plugin defined metrics. stats: introduce is_custom_metric flag. Aug 23, 2021
Comment thread test/per_file_coverage.sh Outdated
@mathetake
Copy link
Copy Markdown
Member Author

mathetake commented Aug 24, 2021

@mathetake
Copy link
Copy Markdown
Member Author

anyway I believe this is ready for review.

@mathetake mathetake marked this pull request as ready for review August 24, 2021 00:41
@mathetake
Copy link
Copy Markdown
Member Author

mathetake commented Sep 10, 2021

sorry the one is actually for DCO - I used git revert xxx for reverting the DynamicName stuff (and pushed without realizing that would miss signed-off).

* return optional<view> for stripCustom...
* use StatNamePool instead of *Set
* add a TODO in prometheus_stats.cc for safer regex
* not use inlined CustomStatNamespaces in tests

Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io>
@mathetake
Copy link
Copy Markdown
Member Author

mathetake commented Sep 10, 2021

How can we continue the dialog about getting a symbol-table-friendly way of making stats in wasm so we don't have catastrophic contention at scale?

I will open an issue for this! cc @PiotrSikora Do you want to say anything?

Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io>
Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io>
Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io>
Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io>
Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io>
jmarantz
jmarantz previously approved these changes Sep 10, 2021
Copy link
Copy Markdown
Contributor

@jmarantz jmarantz left a comment

Choose a reason for hiding this comment

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

Looks great; couple of minor points and one concern around lifetime in your new StatName member var. But assuming at least the lifetime issue is commented on or just made safe by inspection, this is good from my end, and I'm ready for @mattklein123 to take another look.

Comment thread source/extensions/common/wasm/wasm.cc Outdated
Comment thread source/server/admin/prometheus_stats.cc Outdated
Comment thread test/server/admin/prometheus_stats_test.cc Outdated
Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io>
Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io>
Copy link
Copy Markdown
Member

@mattklein123 mattklein123 left a comment

Choose a reason for hiding this comment

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

Thanks for iterating on this!

@mattklein123 mattklein123 merged commit 0bbf23c into envoyproxy:main Sep 13, 2021
@mathetake mathetake deleted the wasm-prometheus-namespace branch September 13, 2021 23:30
@mathetake
Copy link
Copy Markdown
Member Author

Thank you so much for your reviews! @mattklein123 @jmarantz


#include "envoy/common/pure.h"

#include "absl/container/flat_hash_set.h"
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

unused here (only used in the impl)

mathetake added a commit to tetratelabs/proxy-wasm-go-sdk that referenced this pull request Sep 17, 2021
Following the change in the Envoy upstream: envoyproxy/envoy#17357

Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io>
rinfx added a commit to higress-group/proxy-wasm-go-sdk that referenced this pull request May 28, 2025
Link: https://code.alibaba-inc.com/Ingress/proxy-wasm-go-sdk/codereview/21792001
* Add Append/Prepend/Replace buffers, and remove SetBuffer to disambiguate. (tetratelabs#174)

Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io>
Co-authored-by: Pascal Wölfle (@pwoelfle)

* Update TinyGo to 0.18 (tetratelabs#175)

Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io>

* Update README.md (tetratelabs#176)

Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io>

* Use Go 1.16.5 on CI (tetratelabs#177)

Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io>

* Cleaned up envoy.yaml. (tetratelabs#178)

Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io>

* Updates linters (tetratelabs#179)

Signed-off-by: Adrian Cole <adrian@tetrate.io>

* doc: cleanup README, fix typo of WASM to Wasm. (tetratelabs#183)

Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io>

* Overhaul package structure, reduce the visible surface to users. (tetratelabs#184)

Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io>

* Add API documentation and more refactoring. (tetratelabs#185)

Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io>

* Add more comment on SendHttpResponse. (tetratelabs#186)

Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io>

* Introduce VMContext, rename RootContext -> PluginContext. (tetratelabs#187)

Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io>

* Complete the doc comment for all exported API. (tetratelabs#188)

Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io>

* Refactor towards End-use doc. (tetratelabs#190)

Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io>

* Modify shared_queue example: use define multiple plugins in singleton.  (tetratelabs#191)

Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io>

* doc: Add instruction for standalone projects. (tetratelabs#192)

Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io>

* Fix README: stop maintaining Envoy/Istio/Proxy-Wasm Go SDK tags (tetratelabs#193)

Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io>

* Fix a typo in the func description (tetratelabs#194)

* Add developer guide of the SDK and Proxy-Wasm in general. (tetratelabs#189)

Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io>

* Run Envoy latest on e2e. (tetratelabs#197)

Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io>

* Not require size in Get{Plugin,VM}Configuration. (tetratelabs#198)

Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io>

* fix: call setActiveContext in onTick. (tetratelabs#202)

Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io>

* Push Wasm images of examples to ghcr. (tetratelabs#203)

Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io>

* examples: only push images on the main branch. (tetratelabs#204)

Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io>

* Package examples as OCI images. (tetratelabs#205)

Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io>

* Fix e2e cache failure. (tetratelabs#206)

Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io>

* e2e: update Envoy versions. (tetratelabs#208)

Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io>

* Allow specifying gRPC status on SendHttpResponse. (tetratelabs#210)

Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io>

* Update README: fix budge. (tetratelabs#211)

* test: use prometheus endpoint for metrics test. (tetratelabs#212)

Following the change in the Envoy upstream: envoyproxy/envoy#17357

Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io>

* Use TinyGo 0.20 & Go 1.17 (tetratelabs#213)

- Removes bingo - replaced with native `go run package@version`.
-  Use `crypto/rand` package in the example - now we are able to use safer randoms in the host implementation.

Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io>

* Update Go version in go.mod. (tetratelabs#214)

Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io>

* chore: update ABI name in the string. (tetratelabs#215)

* Test: add Envoy v1.20 in the matrics. (tetratelabs#216)

Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io>

* Fix panic in dispatched callback on getting empty http trailers. (tetratelabs#218)

Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io>

* proxytest: fix the behavior for empty header. (tetratelabs#221)

* Check emptiness of path/data for property. (tetratelabs#222)

Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io>

* Update TinyGo to 0.21.0 (tetratelabs#226)

Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io>

* Add the ref to func-e in README.md. (tetratelabs#227)

Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io>

* Add proxywasm.SetEffectiveContext (tetratelabs#229)

This hostcall can be used to change the context after receiving
types.PluginContext.OnQueueReady or types.PluginContext.OnTick.
This can be useful if we need resume http request from those
callbacks, for example.

Fixes tetratelabs#228.

Signed-off-by: Konstantin Misyutin <konstantin.misyutin@huawei.com>

* Add Istio 1.12 in End-to-End test matrix. (tetratelabs#230)

Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io>

* Specify the Go 1.17+ requirement. (tetratelabs#231)

Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io>

* Fix wrong path size for SetProperty (tetratelabs#235)

* Create default Http context in Hello world example. (tetratelabs#236)

* Clarify the unimplemented error (tetratelabs#237)

* ci: test on Envoy v1.21 (tetratelabs#238)

Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io>

* Allow foreign functions to be called with empty byte arrays (tetratelabs#239)

* ci: comment why passing CGO=disabled explicitly (tetratelabs#241)

Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io>

* Fix a couple of typos (tetratelabs#242)

* Update TinyGo to 0.22.0 (tetratelabs#243)

Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io>

* example: using prometheus tags in custom metrics (tetratelabs#246)

* Remove $ sign for easy cut&paste (tetratelabs#247)

* ci: add Istio 1.13 e2e test (tetratelabs#248)

Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io>

* ci: update Istio versions, and drop 1.10, 1.9 (tetratelabs#254)

Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io>

* Each example is an own go module (tetratelabs#265)

* build: build each example in its dir (tetratelabs#266)

Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io>

* chore: adds JSON validation example. (tetratelabs#264)

* Fix OCI image build (tetratelabs#267)

Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io>

* Fix typo in func-e (tetratelabs#268)

* Do not call callbacks for deleted contexts. (tetratelabs#270)

Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io>

* Improves json validation readme (tetratelabs#271)

* chore: fixes typo.

* docs: improves readme instructions.

* chore: adds dockerfile.

* chore: fixes httpbin sample yaml files.

* tests: adds e2e test.

* Small fixes to JSON validation example (tetratelabs#272)

* ci: run e2e on Envoy 1.22 (tetratelabs#273)

Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io>

* Upgrade TinyGo to 0.23 (tetratelabs#279)

Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io>

* Polishes version updates (tetratelabs#280)

Signed-off-by: Adrian Cole <adrian@tetrate.io>

* Upgrade golangci-lint to 1.46.0 (tetratelabs#282)

Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io>

* Update yaml.v3 dep in examples (tetratelabs#289)

Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io>

* Update yaml.v3 dep (tetratelabs#290)

Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io>

* ci: adds Istio 1.14 (tetratelabs#293)

Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io>

* Adds response headers test (tetratelabs#295)

* Add GetCurrentResponseHeaders to proxytest interface

* Add GetCurrentResponseHeaders implementation to httpHostEmulator

* chore: adds demonstrating example.

Co-authored-by: John Keates <5306980+johnkeates@users.noreply.github.com>

* fix(proxytest): make headers and trailers case-insensitive (tetratelabs#298)

Similarly to envoy, convert header and trailer keys to lower-case.
This is particularly useful in Go given that the Go standard library
uses a different format to deal with case-insensitiveness requirement.
https://github.com/golang/go/blob/go1.18.3/src/net/http/header.go#L226-L229

* TinyGo 0.24.0 (tetratelabs#299)

Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io>

* ci: adds Envoy 1.23 test (tetratelabs#301)

Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io>

* Update README on installation  (tetratelabs#303)

Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io>

* example: multiple dispatches (tetratelabs#305)

Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io>

* Adds main_test.go for multiple dispatches example (tetratelabs#306)

Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io>

* Update Go to 1.18 in examples (tetratelabs#308)

Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io>

* Upgrade golangci-lint, goimports (tetratelabs#309)

Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io>

* Adds support for map-typed metadata  (tetratelabs#310)

Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io>

* Add a wrapper for running compiled wasm plugins with proxytest. (tetratelabs#311)

Signed-off-by: Anuraag Agrawal <anuraaga@gmail.com>

* Run example tests using compiled wasm binary too. (tetratelabs#312)

This changes example unit tests to showcase that proxytest framework
is not only able to run the unit test on the host, but also run compiled
Wasm binaries powered by wazero.

* Use tinygo default tag instead of explicit proxytest tag (tetratelabs#313)

* Removes "proxytest" build tag completely (tetratelabs#314)

Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io>

* Fix getting http response body in proxytest (tetratelabs#315)

* TinyGo 0.25.0 (tetratelabs#316)

Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io>

* Fix buffering of bodies in proxytest (tetratelabs#317)

* Tweak definition of ci cache (tetratelabs#318)

* Fixes Http Body e2e test: correctly retry in require.Eventually (tetratelabs#320)

Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io>

* Add docs for HostEmulator (tetratelabs#319)

* Updates to latest wazero, testify and golint (tetratelabs#321)

Signed-off-by: Adrian Cole <adrian@tetrate.io>

* deps: updates wazero to 1.0.0-beta.2 (tetratelabs#322)

Signed-off-by: Adrian Cole <adrian@tetrate.io>

* ci: adds Istio 1.15.0 (tetratelabs#325)

Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io>

* Add build tag that prints timings of ABI method execution. (tetratelabs#327)

Fixes tetratelabs#326

* Add sleep to timing test plugin to avoid sporadically logging 0s (tetratelabs#328)

Add sleep to timing test plugin to avoid sporadically logging 0s.

* Rename Test_onVmStart to Test_pluginInitialization (tetratelabs#329)

* wazero: updates to 1.0.0-pre.2 (tetratelabs#331)

Signed-off-by: Adrian Cole <adrian@tetrate.io>
Co-authored-by: Takeshi Yoneda <takeshi@tetrate.io>

* restores build.example target in Makefile (tetratelabs#336)

* ci: adds Envoy 1.24 (tetratelabs#337)

Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io>

* test framework: Implement ProxyGetProperty and ProxySetProperty (tetratelabs#332)

* deps: updates wazero to 1.0.0-pre.3 (tetratelabs#338)

Signed-off-by: Adrian Cole <adrian@tetrate.io>

* Adds headers based on argument for "http_headers" example (tetratelabs#339)

* ci: adds Istio 1.16 (tetratelabs#341)

Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io>

* ci: upgrade TinyGo 0.26, drop EOL versions of Envoy/Istio (tetratelabs#343)

Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io>

* deps: updates wazero to 1.0.0-pre.4 (tetratelabs#347)

* deps: upgrade to wazero 1.0.0-pre.7 (tetratelabs#352)

deps: upgrade to wazero 1.0.0-pre.7

* Update log descriptions (tetratelabs#351)

* proxytest: ensure stdout/stderr are visible (tetratelabs#353)

* ci: adds Envoy 1.25 (tetratelabs#354)

* deps: updates wazero to 1.0.0-pre.8 (tetratelabs#355)

Signed-off-by: Edoardo Vacchi <evacchi@users.noreply.github.com>

* ci: update TinyGo to 0.27 (tetratelabs#356)

Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io>

* ci: adds Istio 1.17.0 (tetratelabs#357)

* deps: updates wazero to 1.0.0-pre.9 (tetratelabs#358)

Signed-off-by: Edoardo Vacchi <evacchi@users.noreply.github.com>

* deps: updates wazero to 1.0.0-rc.1 (tetratelabs#361)

Signed-off-by: Edoardo Vacchi <evacchi@users.noreply.github.com>

* deps: updates wazero to 1.0.0-rc.2 (tetratelabs#366)

Signed-off-by: Adrian Cole <adrian@tetrate.io>

* Updates to latest versions and documents ABI used in wasmwrapper (tetratelabs#370)

Signed-off-by: Adrian Cole <adrian@tetrate.io>

* deps: updates wazero to 1.0.1 (tetratelabs#371)

Signed-off-by: Adrian Cole <adrian@tetrate.io>

* doc: add reference to nottinygc (tetratelabs#378)

Signed-off-by: Takeshi Yoneda <t.y.mathetake@gmail.com>

* Fix typo in OVERVIEW.md (tetratelabs#384)

* Updates TinyGo, adds latest Istio to e2e test (tetratelabs#385)

Signed-off-by: Takeshi Yoneda <t.y.mathetake@gmail.com>

* Fix typo: ququeID->queueID, Therfore->Therefore (tetratelabs#387)

Signed-off-by: yike21 <yike21@qq.com>

* e2e: longer timeouts (tetratelabs#388)

Signed-off-by: Takeshi Yoneda <t.y.mathetake@gmail.com>

* ci: update TinyGo to 0.29 (tetratelabs#392)

Signed-off-by: Takeshi Yoneda <t.y.mathetake@gmail.com>

* chore: upgrades support for envoy and istio/proxyv2 (tetratelabs#393)

* ci: Updates TinyGo to 0.30 (tetratelabs#395)

Signed-off-by: Takeshi Yoneda <t.y.mathetake@gmail.com>

* Adds `properties` package (tetratelabs#399)

Signed-off-by: Takeshi Yoneda <t.y.mathetake@gmail.com>

* Allows setting empty buffer vis SharedData API (tetratelabs#401)

Signed-off-by: Takeshi Yoneda <t.y.mathetake@gmail.com>

* New properties API completion (tetratelabs#403)

* chore: simplify properties. (tetratelabs#404)

* properties: ensures enum naming consistency (tetratelabs#405)

Signed-off-by: Takeshi Yoneda <t.y.mathetake@gmail.com>

* chore: upgrades support for latest envoy and istio/proxyv2 (tetratelabs#420)

* chore: fixes typos (tetratelabs#419)

* fix: body callbacks return the whole buffered body size (tetratelabs#418)

* example: adds http_body_chunk (tetratelabs#421)

* Updates dependencies (tetratelabs#424)

Signed-off-by: Takeshi Yoneda <t.y.mathetake@gmail.com>

* add redis support

* Merge pull request #2 from rinfx/main

add redis support

* Merge pull request #3 from higress-group/support-redis

Support redis

* package rename

* package rename

* Update README.md

* redis sdk update

* Merge pull request #4 from higress-group/redis-update

redis sdk update

* Update README.md

* support proxy wasm version 0.2.100

* Merge pull request #5 from johnlanni/proxy-wasm-0-2-100

support proxy wasm version 0.2.100

* chore: Add simple Redis call implementation to rootHostEmulator, it do not work right.

* chore: Add Redis initialization func in rootHostEmulator to enable the test framework to be used, but the logic was NOT actually implemented

This commit adds the implementation for the `ProxyRedisInit` function in the `rootHostEmulator` struct. It extracts the upstream, username, and password from the provided data and logs them. However, the actual implementation is still pending.

Note: The recent user commits and repository commits were not relevant for generating this commit message.

* Merge pull request #6 from TJKkking/main

ProxyRedisInit and ProxyRedisCall functions are added in proxytest to enable the test framework to be used, but the logic is NOT actually implemented

* feat: Add SendHttpResponseV2 function

* Update proxywasm/hostcall.go

* Merge pull request #7 from CH3CHO/feat/send-http-response-v2

feat: Add SendHttpResponseWithDetail function

* fix: Fix an incorrect func name

* Merge pull request #8 from CH3CHO/fix/send-http-response

fix: Fix an incorrect func name

* use nottinygc

* Merge pull request #10 from johnlanni/add-nottinygc

use nottinygc

* Update Go

Signed-off-by: Shubham Sharma <shubhash@microsoft.com>

* Tidy all examples

Signed-off-by: Shubham Sharma <shubhash@microsoft.com>

* Add test coverage

Signed-off-by: Shubham Sharma <shubhash@microsoft.com>

* Update Go and TinyGo in pipelines

Signed-off-by: Shubham Sharma <shubhash@microsoft.com>

* Remove deprecated method

Signed-off-by: Shubham Sharma <shubhash@microsoft.com>

* Revert go version upgrade

Signed-off-by: Shubham Sharma <shubhash@microsoft.com>

* Add multiple variants

Signed-off-by: Shubham Sharma <shubhash@microsoft.com>

* Add example with go 1.23

Signed-off-by: Shubham Sharma <shubhash@microsoft.com>

* Revert workflow changes

Signed-off-by: Shubham Sharma <shubhash@microsoft.com>

* Merge pull request #11 from shubham1172/shubham1172/update-go

Add support for newer versions of Go

* fix send local response with detail
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

wasm: allow customization of prometheus namespaces

7 participants