open-consul/agent/structs/deep-copy.sh
Dan Upton 0a0534a094
perf: remove expensive reflection from xDS hot path (#14934)
Replaces the reflection-based implementation of proxycfg's
ConfigSnapshot.Clone with code generated by deep-copy.

While load testing server-based xDS (for consul-dataplane) we discovered
this method is extremely expensive. The ConfigSnapshot struct, directly
or indirectly, contains a copy of many of the structs in the agent/structs
package, which creates a large graph for copystructure.Copy to traverse
at runtime, on every proxy reconfiguration.
2022-10-14 10:26:42 +01:00

49 lines
1.2 KiB
Bash
Executable file

#!/usr/bin/env bash
readonly PACKAGE_DIR="$(dirname "${BASH_SOURCE[0]}")"
cd $PACKAGE_DIR
# Uses: https://github.com/globusdigital/deep-copy
deep-copy \
-pointer-receiver \
-o ./structs.deepcopy.go \
-type CARoot \
-type CheckServiceNode \
-type CheckType \
-type CompiledDiscoveryChain \
-type ConnectProxyConfig \
-type DiscoveryFailover \
-type DiscoveryGraphNode \
-type DiscoveryResolver \
-type DiscoveryRoute \
-type DiscoverySplit \
-type ExposeConfig \
-type GatewayService \
-type GatewayServiceTLSConfig \
-type HTTPHeaderModifiers \
-type HashPolicy \
-type HealthCheck \
-type IndexedCARoots \
-type IngressListener \
-type Intention \
-type IntentionPermission \
-type LoadBalancer \
-type MeshConfigEntry \
-type MeshDirectionalTLSConfig \
-type MeshTLSConfig \
-type Node \
-type NodeService \
-type PeeringServiceMeta \
-type ServiceConfigEntry \
-type ServiceConfigResponse \
-type ServiceConnect \
-type ServiceDefinition \
-type ServiceResolverConfigEntry \
-type ServiceResolverFailover \
-type ServiceRoute \
-type ServiceRouteDestination \
-type ServiceRouteMatch \
-type Upstream \
-type UpstreamConfiguration \
./