Skip to content

Instantly share code, notes, and snippets.

@gszr
gszr / gist:98962ed0ccc2c9503d942f5f31570efa
Created April 17, 2025 16:19
callout-custom-cache-key
{
"name": "request-callout",
"config": {
"callouts": [
{
"name": "callout1",
"request": {
"url": "http://httpbin.org/anything",
"by_lua": "kong.ctx.shared.callouts.callout1.caching.cache_key = kong.request.get_header('cache-key')"
},
{
"name": "request-callout",
"config": {
"callouts": [
{
"name": "c1",
"request": {
"url": "http://httpbin.org/uuid",
"method": "GET"
},
{
"name": "request-callout",
"config": {
"callouts": [
{
"name": "callout1",
"request": {
"url": "http://httpbin.org/anything",
"method": "GET"
},
{
"name": "request-callout",
"config": {
"callouts": [
{
"name": "callout1",
"request": {
"url": "http://httpbin.org/anything",
"by_lua": "local body = kong.request.get_body() or {}; local id = body.id; if id then kong.ctx.shared.callouts.callout1.request.params.url = 'http://httpbin.org/anything/' .. id end",
"method": "GET"
{
"name": "request-callout",
"config": {
"callouts": [
{
"name": "callout1",
"request": {
"url": "http://httpbin.org/anything",
"method": "GET",
"query": {
worker_processes 1;
events{}
http {
server {
listen 10000 http2;
location / {
grpc_pass_header Server;
@gszr
gszr / go_leak.md
Created February 7, 2025 21:46
Go plugin investigation

After some more testing, I found no confirmation for the hypothesis below.

In testing, I instrumented Go pluginserver with the pprof library, as follows:

import (
  ...
	_ "net/http/pprof"
)
func main() {
\documentclass{article}
\usepackage{amsmath}
\usepackage{algorithm}
\usepackage{algpseudocode}
\begin{document}
\noindent
\begin{minipage}{0.45\linewidth}
\raggedright
@gszr
gszr / luarocks.lock
Last active January 31, 2025 11:32
Kong Lockfile (epoch 1738323143)
return {
dependencies = {
ansicolors = "1.0.2-3",
binaryheap = "0.4-1",
date = "2.2.1-1",
etlua = "1.3.0-1",
inspect = "3.1.3-0",
["kong-lapis"] = "1.16.0.1-1",
["kong-pgmoon"] = "1.16.2-1",
loadkit = "1.1.0-1",
@gszr
gszr / gist:077d51df9d21386fcc3ebbafbe842062
Last active December 19, 2024 20:26
gRPC-Web Kong plugin and trailers
### Brief Intro
This answer will be a bit longer than I wanted it to be, but hopefully it clears
things up.
gRPC over HTTP/2 mandates "TE: trailers" (see [1] in references) since it
makes use of trailers - e.g., for the grpc-status and grpc-message headers
(it's useful to send a status at the end of the response rather than too early).
However, many client and server implementations do not fully handle trailers.