Skip to content

Commit 606a1b6

Browse files
committed
chore: resource tree call memory optimization
1 parent 3074d15 commit 606a1b6

6 files changed

Lines changed: 200 additions & 59 deletions

File tree

kubelink/config/GlobalConfig.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ type HelmReleaseConfig struct {
2626
ParentChildGvkMapping string `env:"PARENT_CHILD_GVK_MAPPING" envDefault:""`
2727
ChartWorkingDirectory string `env:"CHART_WORKING_DIRECTORY" envDefault:"/home/devtron/devtroncd/charts/"`
2828
BuildNodesBatchSize int `env:"BUILD_NODES_BATCH_SIZE" envDefault:"2"`
29+
ChildObjectListingLimit int64 `env:"CHILD_OBJECT_LISTING_LIMIT" envDefault:"100"`
2930
}
3031

3132
func GetHelmReleaseConfig() (*HelmReleaseConfig, error) {

kubelink/env_gen.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
[{"Category":"DEVTRON","Fields":[{"Env":"APP","EnvType":"string","EnvValue":"kubelink","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"BUILD_NODES_BATCH_SIZE","EnvType":"int","EnvValue":"2","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"CHART_WORKING_DIRECTORY","EnvType":"string","EnvValue":"/home/devtron/devtroncd/charts/","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"CONSUMER_CONFIG_JSON","EnvType":"string","EnvValue":"","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"DEFAULT_LOG_TIME_LIMIT","EnvType":"int64","EnvValue":"1","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"ENABLE_HELM_RELEASE_CACHE","EnvType":"bool","EnvValue":"true","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"ENABLE_STATSVIZ","EnvType":"bool","EnvValue":"false","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"K8s_CLIENT_MAX_IDLE_CONNS_PER_HOST","EnvType":"int","EnvValue":"25","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"K8s_TCP_IDLE_CONN_TIMEOUT","EnvType":"int","EnvValue":"300","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"K8s_TCP_KEEPALIVE","EnvType":"int","EnvValue":"30","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"K8s_TCP_TIMEOUT","EnvType":"int","EnvValue":"30","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"K8s_TLS_HANDSHAKE_TIMEOUT","EnvType":"int","EnvValue":"10","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"KUBELINK_GRPC_MAX_RECEIVE_MSG_SIZE","EnvType":"int","EnvValue":"20","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"KUBELINK_GRPC_MAX_SEND_MSG_SIZE","EnvType":"int","EnvValue":"4","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"LOG_LEVEL","EnvType":"int","EnvValue":"-1","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"MANIFEST_FETCH_BATCH_SIZE","EnvType":"int","EnvValue":"2","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"MAX_COUNT_FOR_HELM_RELEASE","EnvType":"int","EnvValue":"20","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"NATS_MSG_ACK_WAIT_IN_SECS","EnvType":"int","EnvValue":"120","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"NATS_MSG_BUFFER_SIZE","EnvType":"int","EnvValue":"-1","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"NATS_MSG_MAX_AGE","EnvType":"int","EnvValue":"86400","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"NATS_MSG_PROCESSING_BATCH_SIZE","EnvType":"int","EnvValue":"1","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"NATS_MSG_REPLICAS","EnvType":"int","EnvValue":"0","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"NATS_SERVER_HOST","EnvType":"string","EnvValue":"nats://devtron-nats.devtroncd:4222","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"PARENT_CHILD_GVK_MAPPING","EnvType":"string","EnvValue":"","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"PG_ADDR","EnvType":"string","EnvValue":"127.0.0.1","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"PG_DATABASE","EnvType":"string","EnvValue":"orchestrator","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"PG_EXPORT_PROM_METRICS","EnvType":"bool","EnvValue":"true","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"PG_LOG_ALL_FAILURE_QUERIES","EnvType":"bool","EnvValue":"true","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"PG_LOG_ALL_QUERY","EnvType":"bool","EnvValue":"false","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"PG_LOG_SLOW_QUERY","EnvType":"bool","EnvValue":"true","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"PG_PASSWORD","EnvType":"string","EnvValue":"","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"PG_PORT","EnvType":"string","EnvValue":"5432","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"PG_QUERY_DUR_THRESHOLD","EnvType":"int64","EnvValue":"5000","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"PG_USER","EnvType":"string","EnvValue":"","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"RUNTIME_CONFIG_LOCAL_DEV","EnvType":"LocalDevMode","EnvValue":"false","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"RUN_HELM_INSTALL_IN_ASYNC_MODE","EnvType":"bool","EnvValue":"false","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"STREAM_CONFIG_JSON","EnvType":"string","EnvValue":"","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"USE_CUSTOM_HTTP_TRANSPORT","EnvType":"bool","EnvValue":"false","EnvDescription":"","Example":"","Deprecated":"false"}]}]
1+
[{"Category":"DEVTRON","Fields":[{"Env":"APP","EnvType":"string","EnvValue":"kubelink","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"BUILD_NODES_BATCH_SIZE","EnvType":"int","EnvValue":"2","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"CHART_WORKING_DIRECTORY","EnvType":"string","EnvValue":"/home/devtron/devtroncd/charts/","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"CHILD_OBJECT_LISTING_LIMIT","EnvType":"int64","EnvValue":"100","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"CONSUMER_CONFIG_JSON","EnvType":"string","EnvValue":"","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"DEFAULT_LOG_TIME_LIMIT","EnvType":"int64","EnvValue":"1","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"ENABLE_HELM_RELEASE_CACHE","EnvType":"bool","EnvValue":"true","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"ENABLE_STATSVIZ","EnvType":"bool","EnvValue":"false","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"K8s_CLIENT_MAX_IDLE_CONNS_PER_HOST","EnvType":"int","EnvValue":"25","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"K8s_TCP_IDLE_CONN_TIMEOUT","EnvType":"int","EnvValue":"300","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"K8s_TCP_KEEPALIVE","EnvType":"int","EnvValue":"30","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"K8s_TCP_TIMEOUT","EnvType":"int","EnvValue":"30","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"K8s_TLS_HANDSHAKE_TIMEOUT","EnvType":"int","EnvValue":"10","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"KUBELINK_GRPC_MAX_RECEIVE_MSG_SIZE","EnvType":"int","EnvValue":"20","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"KUBELINK_GRPC_MAX_SEND_MSG_SIZE","EnvType":"int","EnvValue":"4","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"LOG_LEVEL","EnvType":"int","EnvValue":"-1","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"MANIFEST_FETCH_BATCH_SIZE","EnvType":"int","EnvValue":"2","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"MAX_COUNT_FOR_HELM_RELEASE","EnvType":"int","EnvValue":"20","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"NATS_MSG_ACK_WAIT_IN_SECS","EnvType":"int","EnvValue":"120","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"NATS_MSG_BUFFER_SIZE","EnvType":"int","EnvValue":"-1","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"NATS_MSG_MAX_AGE","EnvType":"int","EnvValue":"86400","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"NATS_MSG_PROCESSING_BATCH_SIZE","EnvType":"int","EnvValue":"1","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"NATS_MSG_REPLICAS","EnvType":"int","EnvValue":"0","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"NATS_SERVER_HOST","EnvType":"string","EnvValue":"nats://devtron-nats.devtroncd:4222","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"PARENT_CHILD_GVK_MAPPING","EnvType":"string","EnvValue":"","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"PG_ADDR","EnvType":"string","EnvValue":"127.0.0.1","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"PG_DATABASE","EnvType":"string","EnvValue":"orchestrator","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"PG_EXPORT_PROM_METRICS","EnvType":"bool","EnvValue":"true","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"PG_LOG_ALL_FAILURE_QUERIES","EnvType":"bool","EnvValue":"true","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"PG_LOG_ALL_QUERY","EnvType":"bool","EnvValue":"false","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"PG_LOG_SLOW_QUERY","EnvType":"bool","EnvValue":"true","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"PG_PASSWORD","EnvType":"string","EnvValue":"","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"PG_PORT","EnvType":"string","EnvValue":"5432","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"PG_QUERY_DUR_THRESHOLD","EnvType":"int64","EnvValue":"5000","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"PG_USER","EnvType":"string","EnvValue":"","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"RUNTIME_CONFIG_LOCAL_DEV","EnvType":"LocalDevMode","EnvValue":"false","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"RUN_HELM_INSTALL_IN_ASYNC_MODE","EnvType":"bool","EnvValue":"false","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"STREAM_CONFIG_JSON","EnvType":"string","EnvValue":"","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"USE_CUSTOM_HTTP_TRANSPORT","EnvType":"bool","EnvValue":"false","EnvDescription":"","Example":"","Deprecated":"false"}]}]

kubelink/env_gen.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
| APP | string |kubelink | | | false |
77
| BUILD_NODES_BATCH_SIZE | int |2 | | | false |
88
| CHART_WORKING_DIRECTORY | string |/home/devtron/devtroncd/charts/ | | | false |
9+
| CHILD_OBJECT_LISTING_LIMIT | int64 |100 | | | false |
910
| CONSUMER_CONFIG_JSON | string | | | | false |
1011
| DEFAULT_LOG_TIME_LIMIT | int64 |1 | | | false |
1112
| ENABLE_HELM_RELEASE_CACHE | bool |true | | | false |

kubelink/pkg/service/commonHelmService/bean.go

Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import (
2323
"github.com/devtron-labs/kubelink/pkg/asyncProvider"
2424
"go.uber.org/zap"
2525
"k8s.io/apimachinery/pkg/api/meta"
26+
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
2627
"k8s.io/apimachinery/pkg/runtime/schema"
2728
"k8s.io/client-go/rest"
2829
)
@@ -222,3 +223,107 @@ func (resp *BuildNodeResponse) WithHealthStatusArray(healthStatusArray []*common
222223
var (
223224
ErrorReleaseNotFoundOnCluster = errors.New("release not found")
224225
)
226+
227+
type filterChildrenObjectsResponse struct {
228+
pvcs []unstructured.Unstructured
229+
manifests []*unstructured.Unstructured
230+
}
231+
232+
func newFilterChildrenObjectsResponse() *filterChildrenObjectsResponse {
233+
return &filterChildrenObjectsResponse{}
234+
}
235+
236+
func (resp *filterChildrenObjectsResponse) GetPvcs() []unstructured.Unstructured {
237+
return resp.pvcs
238+
}
239+
240+
func (resp *filterChildrenObjectsResponse) GetManifests() []*unstructured.Unstructured {
241+
return resp.manifests
242+
}
243+
244+
func (resp *filterChildrenObjectsResponse) WithPvcs(pvcs []unstructured.Unstructured) *filterChildrenObjectsResponse {
245+
resp.pvcs = pvcs
246+
return resp
247+
}
248+
249+
func (resp *filterChildrenObjectsResponse) WithManifests(manifests []*unstructured.Unstructured) *filterChildrenObjectsResponse {
250+
resp.manifests = manifests
251+
return resp
252+
}
253+
254+
type filterChildrenObjectsRequest struct {
255+
childGvk schema.GroupVersionResource
256+
pvcs []unstructured.Unstructured
257+
listObjects *unstructured.UnstructuredList
258+
namespace string
259+
parentGvk schema.GroupVersionKind
260+
parentName string
261+
}
262+
263+
func (req *filterChildrenObjectsRequest) GetLoggerMetadata(keysAndValues ...any) []any {
264+
metaData := []any{
265+
"namespace", req.namespace,
266+
"childGvk", req.childGvk,
267+
"parentGvk", req.parentGvk,
268+
"parentName", req.parentName,
269+
}
270+
return append(metaData, keysAndValues...)
271+
}
272+
273+
func (req *filterChildrenObjectsRequest) GetChildGvk() schema.GroupVersionResource {
274+
return req.childGvk
275+
}
276+
277+
func (req *filterChildrenObjectsRequest) GetPvcs() []unstructured.Unstructured {
278+
return req.pvcs
279+
}
280+
281+
func (req *filterChildrenObjectsRequest) GetListObjects() *unstructured.UnstructuredList {
282+
return req.listObjects
283+
}
284+
285+
func (req *filterChildrenObjectsRequest) GetNamespace() string {
286+
return req.namespace
287+
}
288+
289+
func (req *filterChildrenObjectsRequest) GetParentGvk() schema.GroupVersionKind {
290+
return req.parentGvk
291+
}
292+
293+
func (req *filterChildrenObjectsRequest) GetParentName() string {
294+
return req.parentName
295+
}
296+
297+
func newFilterChildrenObjectsRequest() *filterChildrenObjectsRequest {
298+
return &filterChildrenObjectsRequest{}
299+
}
300+
301+
func (req *filterChildrenObjectsRequest) WithChildGvk(gvr schema.GroupVersionResource) *filterChildrenObjectsRequest {
302+
req.childGvk = gvr
303+
return req
304+
}
305+
306+
func (req *filterChildrenObjectsRequest) WithPvcs(pvcs []unstructured.Unstructured) *filterChildrenObjectsRequest {
307+
req.pvcs = pvcs
308+
return req
309+
}
310+
311+
func (req *filterChildrenObjectsRequest) WithListObjects(objects *unstructured.UnstructuredList) *filterChildrenObjectsRequest {
312+
req.listObjects = objects
313+
return req
314+
}
315+
316+
func (req *filterChildrenObjectsRequest) WithNamespace(namespace string) *filterChildrenObjectsRequest {
317+
req.namespace = namespace
318+
return req
319+
}
320+
321+
func (req *filterChildrenObjectsRequest) WithParentGvk(parentGvk schema.GroupVersionKind) *filterChildrenObjectsRequest {
322+
req.parentGvk = parentGvk
323+
return req
324+
}
325+
326+
func (req *filterChildrenObjectsRequest) WithParentName(parentName string) *filterChildrenObjectsRequest {
327+
req.parentName = parentName
328+
return req
329+
}

0 commit comments

Comments
 (0)