Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
K
k3s
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Jacklull
k3s
Commits
2a49281b
Commit
2a49281b
authored
Apr 19, 2017
by
gmarek
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fix traces for get requests
parent
9c177799
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
15 additions
and
9 deletions
+15
-9
rest.go
staging/src/k8s.io/apiserver/pkg/endpoints/handlers/rest.go
+15
-9
No files found.
staging/src/k8s.io/apiserver/pkg/endpoints/handlers/rest.go
View file @
2a49281b
...
@@ -77,7 +77,7 @@ func (scope *RequestScope) err(err error, w http.ResponseWriter, req *http.Reque
...
@@ -77,7 +77,7 @@ func (scope *RequestScope) err(err error, w http.ResponseWriter, req *http.Reque
// getterFunc performs a get request with the given context and object name. The request
// getterFunc performs a get request with the given context and object name. The request
// may be used to deserialize an options object to pass to the getter.
// may be used to deserialize an options object to pass to the getter.
type
getterFunc
func
(
ctx
request
.
Context
,
name
string
,
req
*
http
.
Request
)
(
runtime
.
Object
,
error
)
type
getterFunc
func
(
ctx
request
.
Context
,
name
string
,
req
*
http
.
Request
,
trace
*
utiltrace
.
Trace
)
(
runtime
.
Object
,
error
)
// MaxRetryWhenPatchConflicts is the maximum number of conflicts retry during a patch operation before returning failure
// MaxRetryWhenPatchConflicts is the maximum number of conflicts retry during a patch operation before returning failure
const
MaxRetryWhenPatchConflicts
=
5
const
MaxRetryWhenPatchConflicts
=
5
...
@@ -86,6 +86,9 @@ const MaxRetryWhenPatchConflicts = 5
...
@@ -86,6 +86,9 @@ const MaxRetryWhenPatchConflicts = 5
// passed-in getterFunc to perform the actual get.
// passed-in getterFunc to perform the actual get.
func
getResourceHandler
(
scope
RequestScope
,
getter
getterFunc
)
http
.
HandlerFunc
{
func
getResourceHandler
(
scope
RequestScope
,
getter
getterFunc
)
http
.
HandlerFunc
{
return
func
(
w
http
.
ResponseWriter
,
req
*
http
.
Request
)
{
return
func
(
w
http
.
ResponseWriter
,
req
*
http
.
Request
)
{
trace
:=
utiltrace
.
New
(
"Get "
+
req
.
URL
.
Path
)
defer
trace
.
LogIfLong
(
500
*
time
.
Millisecond
)
namespace
,
name
,
err
:=
scope
.
Namer
.
Name
(
req
)
namespace
,
name
,
err
:=
scope
.
Namer
.
Name
(
req
)
if
err
!=
nil
{
if
err
!=
nil
{
scope
.
err
(
err
,
w
,
req
)
scope
.
err
(
err
,
w
,
req
)
...
@@ -94,7 +97,7 @@ func getResourceHandler(scope RequestScope, getter getterFunc) http.HandlerFunc
...
@@ -94,7 +97,7 @@ func getResourceHandler(scope RequestScope, getter getterFunc) http.HandlerFunc
ctx
:=
scope
.
ContextFunc
(
req
)
ctx
:=
scope
.
ContextFunc
(
req
)
ctx
=
request
.
WithNamespace
(
ctx
,
namespace
)
ctx
=
request
.
WithNamespace
(
ctx
,
namespace
)
result
,
err
:=
getter
(
ctx
,
name
,
req
)
result
,
err
:=
getter
(
ctx
,
name
,
req
,
trace
)
if
err
!=
nil
{
if
err
!=
nil
{
scope
.
err
(
err
,
w
,
req
)
scope
.
err
(
err
,
w
,
req
)
return
return
...
@@ -103,6 +106,7 @@ func getResourceHandler(scope RequestScope, getter getterFunc) http.HandlerFunc
...
@@ -103,6 +106,7 @@ func getResourceHandler(scope RequestScope, getter getterFunc) http.HandlerFunc
scope
.
err
(
err
,
w
,
req
)
scope
.
err
(
err
,
w
,
req
)
return
return
}
}
trace
.
Step
(
"About to write a response"
)
responsewriters
.
WriteObject
(
http
.
StatusOK
,
scope
.
Kind
.
GroupVersion
(),
scope
.
Serializer
,
result
,
w
,
req
)
responsewriters
.
WriteObject
(
http
.
StatusOK
,
scope
.
Kind
.
GroupVersion
(),
scope
.
Serializer
,
result
,
w
,
req
)
}
}
}
}
...
@@ -110,11 +114,7 @@ func getResourceHandler(scope RequestScope, getter getterFunc) http.HandlerFunc
...
@@ -110,11 +114,7 @@ func getResourceHandler(scope RequestScope, getter getterFunc) http.HandlerFunc
// GetResource returns a function that handles retrieving a single resource from a rest.Storage object.
// GetResource returns a function that handles retrieving a single resource from a rest.Storage object.
func
GetResource
(
r
rest
.
Getter
,
e
rest
.
Exporter
,
scope
RequestScope
)
http
.
HandlerFunc
{
func
GetResource
(
r
rest
.
Getter
,
e
rest
.
Exporter
,
scope
RequestScope
)
http
.
HandlerFunc
{
return
getResourceHandler
(
scope
,
return
getResourceHandler
(
scope
,
func
(
ctx
request
.
Context
,
name
string
,
req
*
http
.
Request
)
(
runtime
.
Object
,
error
)
{
func
(
ctx
request
.
Context
,
name
string
,
req
*
http
.
Request
,
trace
*
utiltrace
.
Trace
)
(
runtime
.
Object
,
error
)
{
// For performance tracking purposes.
trace
:=
utiltrace
.
New
(
"Get "
+
req
.
URL
.
Path
)
defer
trace
.
LogIfLong
(
500
*
time
.
Millisecond
)
// check for export
// check for export
options
:=
metav1
.
GetOptions
{}
options
:=
metav1
.
GetOptions
{}
if
values
:=
req
.
URL
.
Query
();
len
(
values
)
>
0
{
if
values
:=
req
.
URL
.
Query
();
len
(
values
)
>
0
{
...
@@ -132,7 +132,9 @@ func GetResource(r rest.Getter, e rest.Exporter, scope RequestScope) http.Handle
...
@@ -132,7 +132,9 @@ func GetResource(r rest.Getter, e rest.Exporter, scope RequestScope) http.Handle
return
nil
,
err
return
nil
,
err
}
}
}
}
if
trace
!=
nil
{
trace
.
Step
(
"About to Get from storage"
)
}
return
r
.
Get
(
ctx
,
name
,
&
options
)
return
r
.
Get
(
ctx
,
name
,
&
options
)
})
})
}
}
...
@@ -140,11 +142,15 @@ func GetResource(r rest.Getter, e rest.Exporter, scope RequestScope) http.Handle
...
@@ -140,11 +142,15 @@ func GetResource(r rest.Getter, e rest.Exporter, scope RequestScope) http.Handle
// GetResourceWithOptions returns a function that handles retrieving a single resource from a rest.Storage object.
// GetResourceWithOptions returns a function that handles retrieving a single resource from a rest.Storage object.
func
GetResourceWithOptions
(
r
rest
.
GetterWithOptions
,
scope
RequestScope
,
isSubresource
bool
)
http
.
HandlerFunc
{
func
GetResourceWithOptions
(
r
rest
.
GetterWithOptions
,
scope
RequestScope
,
isSubresource
bool
)
http
.
HandlerFunc
{
return
getResourceHandler
(
scope
,
return
getResourceHandler
(
scope
,
func
(
ctx
request
.
Context
,
name
string
,
req
*
http
.
Request
)
(
runtime
.
Object
,
error
)
{
func
(
ctx
request
.
Context
,
name
string
,
req
*
http
.
Request
,
trace
*
utiltrace
.
Trace
)
(
runtime
.
Object
,
error
)
{
opts
,
subpath
,
subpathKey
:=
r
.
NewGetOptions
()
opts
,
subpath
,
subpathKey
:=
r
.
NewGetOptions
()
trace
.
Step
(
"About to process Get options"
)
if
err
:=
getRequestOptions
(
req
,
scope
,
opts
,
subpath
,
subpathKey
,
isSubresource
);
err
!=
nil
{
if
err
:=
getRequestOptions
(
req
,
scope
,
opts
,
subpath
,
subpathKey
,
isSubresource
);
err
!=
nil
{
return
nil
,
err
return
nil
,
err
}
}
if
trace
!=
nil
{
trace
.
Step
(
"About to Get from storage"
)
}
return
r
.
Get
(
ctx
,
name
,
opts
)
return
r
.
Get
(
ctx
,
name
,
opts
)
})
})
}
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment