Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

http_*: add log for http api and refine the err handle logic #2997

Merged
merged 38 commits into from
Nov 5, 2021

Conversation

asddongmen
Copy link
Contributor

@asddongmen asddongmen commented Oct 9, 2021

What problem does this PR solve?

http api has no log for request, which will cause difficulties for debug.
close #3064

What is changed and how it works?

Add a log midleware in gin.router which will log for every request and extract http api error handle logic into a func.
Any suggestions are welcome~!

Check List

Tests

  • Unit test
  • Manual test (add detailed scripts or steps below)
  1. run tiup playground
  2. run cdc server
  3. create a changfeed test1
  4. make some requests
  5. log as below
# curl -i -X GET http://127.0.0.1:8300/api/v1/changefeeds 
[2021/10/09 15:39:15.652 +08:00] [INFO] [http_router.go:135] [/api/v1/changefeeds] [status=200] [method=GET] [path=/api/v1/changefeeds] [query=] [ip=127.0.0.1] [user-agent=curl/7.64.1] [errors=] [cost=4.003231ms]

# curl -i -X GET http://127.0.0.1:8300/api/v1/changefeeds/test1
[2021/10/09 15:41:10.455 +08:00] [INFO] [http_router.go:135] [/api/v1/changefeeds/test1] [status=200] [method=GET] [path=/api/v1/changefeeds/test1] [query=] [ip=127.0.0.1] [user-agent=curl/7.64.1] [errors=] [cost=4.630352ms]

# curl -i -X GET http://127.0.0.1:8300/api/v1/changefeeds/test2
# changefeed test2 does not exist 
[2021/10/09 15:42:04.215 +08:00] [INFO] [http_router.go:135] [/api/v1/changefeeds/test2] [status=400] [method=GET] [path=/api/v1/changefeeds/test2] [query=] [ip=127.0.0.1] [user-agent=curl/7.64.1] [errors="Error #01: [CDC:ErrChangeFeedNotExists]changefeed not exists, key: /tidb/cdc/changefeed/info/test2\n"] [cost=2.576947ms]

Code changes

  • Has exported function/method change

Side effects

  • Possible performance regression

Related changes

  • Need to cherry-pick to the release branch

Release note

None

@ti-chi-bot
Copy link
Member

ti-chi-bot commented Oct 9, 2021

[REVIEW NOTIFICATION]

This pull request has been approved by:

  • hi-rustin
  • overvenus

To complete the pull request process, please ask the reviewers in the list to review by filling /cc @reviewer in the comment.
After your PR has acquired the required number of LGTMs, you can assign this pull request to the committer in the list by filling /assign @committer in the comment to help you merge this pull request.

The full list of commands accepted by this bot can be found here.

Reviewer can indicate their review by submitting an approval review.
Reviewer can cancel approval by submitting a request changes review.

@ti-chi-bot ti-chi-bot added release-note-none Denotes a PR that doesn't merit a release note. size/L Denotes a PR that changes 100-499 lines, ignoring generated files. labels Oct 9, 2021
@asddongmen asddongmen added component/status-server Status server component. needs-cherry-pick-release-5.2 Should cherry pick this PR to release-5.2 branch. component/metrics-logging Metrics and logging component. status/ptal Could you please take a look? labels Oct 9, 2021
pkg/errors/helper.go Outdated Show resolved Hide resolved
cdc/http_router.go Show resolved Hide resolved
cdc/capture/http_handler.go Outdated Show resolved Hide resolved
@amyangfei amyangfei added this to the v5.3.0 milestone Oct 9, 2021
@ben1009
Copy link
Contributor

ben1009 commented Oct 11, 2021

check fail

cdc/capture/http_handler.go:751:9: Error return value of `c.Error` is not checked (errcheck)
	c.Error(err)
	       ^
cdc/capture/http_handler.go:757:2: S1023: redundant `return` statement (gosimple)
	return
	^
make: *** [check-static] Error 1

cdc/capture/http_handler.go Outdated Show resolved Hide resolved
pkg/errors/helper_test.go Outdated Show resolved Hide resolved
@asddongmen
Copy link
Contributor Author

/run-integration-tests

@ti-chi-bot ti-chi-bot added size/XL Denotes a PR that changes 500-999 lines, ignoring generated files. and removed size/L Denotes a PR that changes 100-499 lines, ignoring generated files. labels Oct 12, 2021
@asddongmen
Copy link
Contributor Author

/run-integration-tests

@ben1009
Copy link
Contributor

ben1009 commented Oct 14, 2021

pkg/config/config.go:205:2: structtag: struct field tag `toml:"log-http"  json:"log-http""` not compatible with reflect.StructTag.Get: key:"value" pairs not separated by spaces (govet)
	LogHTTP  bool       `toml:"log-http"  json:"log-http""`
	^
make: *** [check-static] Error 1

json:"log-http""-> json:"log-http"

@ti-chi-bot ti-chi-bot added the needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. label Oct 14, 2021
Copy link
Member

@Rustin170506 Rustin170506 left a comment

Choose a reason for hiding this comment

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

reset LGTM

cdc/sink/mysql.go Outdated Show resolved Hide resolved
pkg/errors/helper.go Outdated Show resolved Hide resolved
cdc/http_router.go Outdated Show resolved Hide resolved
cdc/http_router.go Outdated Show resolved Hide resolved
Copy link
Member

@Rustin170506 Rustin170506 left a comment

Choose a reason for hiding this comment

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

One more small problem, the rest is great!

cdc/capture/http_errors.go Outdated Show resolved Hide resolved
@ti-chi-bot ti-chi-bot added status/LGT2 Indicates that a PR has LGTM 2. and removed status/LGT1 Indicates that a PR has LGTM 1. labels Nov 5, 2021
@Rustin170506 Rustin170506 added the area/ticdc Issues or PRs related to TiCDC. label Nov 5, 2021
@amyangfei
Copy link
Contributor

/merge

@ti-chi-bot
Copy link
Member

This pull request has been accepted and is ready to merge.

Commit hash: 100cbf4

@ti-chi-bot ti-chi-bot added the status/can-merge Indicates a PR has been approved by a committer. label Nov 5, 2021
@ti-chi-bot ti-chi-bot merged commit 28424ed into pingcap:master Nov 5, 2021
ti-chi-bot pushed a commit to ti-chi-bot/tiflow that referenced this pull request Nov 5, 2021
@ti-chi-bot
Copy link
Member

In response to a cherrypick label: new pull request created: #3306.

@ti-chi-bot
Copy link
Member

In response to a cherrypick label: new pull request created: #3307.

overvenus pushed a commit that referenced this pull request Jan 18, 2022
* fix the txn_batch_size metric inaccuracy bug when the sink target is MQ

* address comments

* add comments for exported functions

* fix the compiling problem

* workerpool: limit the rate to output deadlock warning (#3775) (#3799)

* metrics: add changefeed checkepoint catch-up ETA (#3300) (#3311)

* pkg,cdc: do not use log package (#3902) (#3939)

* *: rename repo from pingcap/ticdc to pingcap/tiflow (#3957)

* kvclient(ticdc): fix kvclient takes too long time to recover (#3612) (#3662)

* tz (ticdc): fix timezone error (#3887) (#3910)

* http_*: add log for http api and refine the err handle logic (#2997) (#3306)

* ticdc/alert: add no owner alert rule (#3809) (#3831)

* etcd_worker: batch etcd patch (#3277) (#3393)

* ticdc/owner: Fix ddl special comment syntax error (#3845) (#3977)

* Clean old owner and old processor in release 5.2 branch (#4019)

* tests(ticdc): set up the sync diff output directory correctly (#3725) (#3745)

* owner,scheduler(cdc): fix nil pointer panic in owner scheduler (#2980) (#4007) (#4015)

* config(ticdc): Fix old value configuration check for maxwell protocol (#3747) (#3782)

* ticdc/processor: Fix backoff base delay misconfiguration (#3992) (#4027)

* sink(ticdc): cherry pick sink bug fix to release 5.2 (#4083) (#4119)

* metrics(ticdc): add resolved ts and add changefeed to dataflow (#4038) (#4103)

* kv(ticdc): reduce eventfeed rate limited log (#4072) (#4110)

close #4006

* This is an automated cherry-pick of #4192

Signed-off-by: ti-chi-bot <[email protected]>

* http_api (ticdc): fix http api 'get processor' panic. (#4117) (#4122)

close #3840

* cdc/sink: adjust kafka initialization logic (#3192) (#3568)

* This is an automated cherry-pick of #3192

Signed-off-by: ti-chi-bot <[email protected]>

* fix conflicts.

* This is an automated cherry-pick of #3682

Signed-off-by: ti-chi-bot <[email protected]>

* fix import.

* fix failpoint path.

* try to fix initialize.

* remove table_sink.

* remove initialization.

* remove owner.

* fix mq.

Co-authored-by: Ling Jin <[email protected]>
Co-authored-by: 3AceShowHand <[email protected]>

* sink (ticdc): fix a deadlock due to checkpointTs fall back in sinkNode (#4084) (#4098)

close #4055

* This is an automated cherry-pick of #4192

Signed-off-by: ti-chi-bot <[email protected]>

* fix conflicts.

* fix conflicts.

* fix conflicts.

Co-authored-by: zhaoxinyu <[email protected]>
Co-authored-by: amyangfei <[email protected]>
Co-authored-by: dongmen <[email protected]>
Co-authored-by: Ling Jin <[email protected]>
Co-authored-by: 3AceShowHand <[email protected]>
overvenus pushed a commit that referenced this pull request Jan 18, 2022
* fix the txn_batch_size metric inaccuracy bug when the sink target is MQ

* address comments

* add comments for exported functions

* fix the compiling problem

* workerpool: limit the rate to output deadlock warning (#3775) (#3795)

* tests(ticdc): set up the sync diff output directory correctly (#3725) (#3741)

* relay(dm): use binlog name comparison (#3710) (#3712)

* dm/load: fix concurrent call Loader.Status (#3459) (#3468)

* cdc/sorter: make unified sorter cgroup aware (#3436) (#3439)

* tz (ticdc): fix timezone error (#3887) (#3906)

* pkg,cdc: do not use log package (#3902) (#3940)

* *: rename repo from pingcap/ticdc to pingcap/tiflow (#3959)

* http_*: add log for http api and refine the err handle logic (#2997) (#3307)

* etcd_worker: batch etcd patch (#3277) (#3389)

* http_api (ticdc): check --cert-allowed-cn before add server common name (#3628) (#3882)

* kvclient(ticdc): fix kvclient takes too long time to recover (#3612) (#3663)

* owner: fix owner tick block http request (#3490) (#3530)

* dm/syncer: use downstream PK/UK to generate DML (#3168) (#3256)

* dep(dm): update go-mysql (#3914) (#3934)

* dm/syncer: multiple rows use downstream schema (#3308) (#3953)

* errorutil,sink,syncer: add errorutil to handle ignorable error (#3264) (#3995)

* dm/worker: don't exit when failed to read checkpoint in relay (#3345) (#4005)

* syncer(dm): use an early location to reset binlog and open safemode (#3860)

* ticdc/owner: Fix ddl special comment syntax error (#3845) (#3978)

* dm/scheduler: fix inconsistent of relay status (#3474) (#4009)

* owner,scheduler(cdc): fix nil pointer panic in owner scheduler (#2980) (#4007) (#4016)

* config(ticdc): Fix old value configuration check for maxwell protocol (#3747) (#3783)

* sink(ticdc): cherry pick sink bug fix to release 5.3 (#4083)

* master(dm): clean and treat invalid load task (#4004) (#4145)

* loader: fix wrong progress in query-status for loader (#4093) (#4143)

close #3252

* ticdc/processor: Fix backoff base delay misconfiguration (#3992) (#4028)

* dm: load table structure from dump files (#3295) (#4163)

* compactor: fix duplicate entry in safemode (#3432) (#3434) (#4088)

* kv(ticdc): reduce eventfeed rate limited log (#4072) (#4111)

close #4006

* metrics(ticdc): add resolved ts and add changefeed to dataflow (#4038) (#4104)

* This is an automated cherry-pick of #4192

Signed-off-by: ti-chi-bot <[email protected]>

* retry(dm): align with tidb latest error message (#4172) (#4254)

close #4159, close #4246

* owner(ticdc): Add bootstrap and try to fix the meta information in it (#3838) (#3865)

* redolog: add a precleanup process when s3 enable (#3525) (#3878)

* ddl(dm): make skipped ddl pass `SplitDDL()` (#4176) (#4227)

close #4173

* cdc/sink: remove Initialize method from the sink interface (#3682) (#3765)

Co-authored-by: Ling Jin <[email protected]>

* http_api (ticdc): fix http api 'get processor' panic. (#4117) (#4123)

close #3840

* sink (ticdc): fix a deadlock due to checkpointTs fall back in sinkNode (#4084) (#4099)

close #4055

* cdc/sink: adjust kafka initialization logic (#3192) (#4162)

* try fix conflicts.

* This is an automated cherry-pick of #4192

Signed-off-by: ti-chi-bot <[email protected]>

* fix conflicts.

* fix conflicts.

Co-authored-by: zhaoxinyu <[email protected]>
Co-authored-by: amyangfei <[email protected]>
Co-authored-by: lance6716 <[email protected]>
Co-authored-by: sdojjy <[email protected]>
Co-authored-by: Ling Jin <[email protected]>
Co-authored-by: 3AceShowHand <[email protected]>
@asddongmen asddongmen deleted the add_log_for_http_api branch June 7, 2022 08:47
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area/ticdc Issues or PRs related to TiCDC. component/metrics-logging Metrics and logging component. component/status-server Status server component. needs-cherry-pick-release-5.2 Should cherry pick this PR to release-5.2 branch. needs-cherry-pick-release-5.3 Should cherry pick this PR to release-5.3 branch. release-note-none Denotes a PR that doesn't merit a release note. size/XL Denotes a PR that changes 500-999 lines, ignoring generated files. status/can-merge Indicates a PR has been approved by a committer. status/LGT2 Indicates that a PR has LGTM 2. status/ptal Could you please take a look? type/enhancement The issue or PR belongs to an enhancement.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

invalid changefeed_id error of open api miss detail error information
8 participants