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

costfuzz: expected required columns to be a subset of output columns in projectBuildProvided #88037

Closed
cockroach-teamcity opened this issue Sep 16, 2022 · 11 comments · Fixed by #88441
Assignees
Labels
branch-master Failures and bugs on the master branch. C-test-failure Broken test (automatically or manually discovered). O-roachtest O-robot Originated from a bot. sync-me T-sql-queries SQL Queries Team
Milestone

Comments

@cockroach-teamcity
Copy link
Member

cockroach-teamcity commented Sep 16, 2022

roachtest.costfuzz failed with artifacts on master @ 9a05046ce19e7678340e82c70d61e928be95bc72:

test artifacts and logs in: /artifacts/costfuzz/run_1
	test_runner.go:1048,test_runner.go:947: test timed out (1h0m0s)

Parameters: ROACHTEST_cloud=gce , ROACHTEST_cpu=4 , ROACHTEST_ssd=0

Help

See: roachtest README

See: How To Investigate (internal)

Same failure on other branches

/cc @cockroachdb/sql-queries

This test on roachdash | Improve this report!

Jira issue: CRDB-19654

@cockroach-teamcity cockroach-teamcity added branch-master Failures and bugs on the master branch. C-test-failure Broken test (automatically or manually discovered). O-roachtest O-robot Originated from a bot. release-blocker Indicates a release-blocker. Use with branch-release-2x.x label to denote which branch is blocked. labels Sep 16, 2022
@cockroach-teamcity cockroach-teamcity added this to the 22.2 milestone Sep 16, 2022
@blathers-crl blathers-crl bot added the T-sql-queries SQL Queries Team label Sep 16, 2022
@DrewKimball
Copy link
Collaborator

DrewKimball commented Sep 16, 2022

There's a panic near the top of the cockroach.log file:

E220916 06:44:56.948222 960 sql/sqltelemetry/report.go:57 ⋮ [n1,client=34.74.3.67:51630,user=root] 125  encountered internal error:
E220916 06:44:56.948222 960 sql/sqltelemetry/report.go:57 ⋮ [n1,client=34.74.3.67:51630,user=root] 125 +expected required columns to be a subset of output columns
E220916 06:44:56.948222 960 sql/sqltelemetry/report.go:57 ⋮ [n1,client=34.74.3.67:51630,user=root] 125 +(1) assertion failure
E220916 06:44:56.948222 960 sql/sqltelemetry/report.go:57 ⋮ [n1,client=34.74.3.67:51630,user=root] 125 +Wraps: (2) attached stack trace
E220916 06:44:56.948222 960 sql/sqltelemetry/report.go:57 ⋮ [n1,client=34.74.3.67:51630,user=root] 125 +  -- stack trace:
E220916 06:44:56.948222 960 sql/sqltelemetry/report.go:57 ⋮ [n1,client=34.74.3.67:51630,user=root] 125 +  | github.com/cockroachdb/cockroach/pkg/sql/opt/ordering.projectBuildProvided
E220916 06:44:56.948222 960 sql/sqltelemetry/report.go:57 ⋮ [n1,client=34.74.3.67:51630,user=root] 125 +  | 	github.com/cockroachdb/cockroach/pkg/sql/opt/ordering/project.go:87
E220916 06:44:56.948222 960 sql/sqltelemetry/report.go:57 ⋮ [n1,client=34.74.3.67:51630,user=root] 125 +  | github.com/cockroachdb/cockroach/pkg/sql/opt/ordering.BuildProvided
E220916 06:44:56.948222 960 sql/sqltelemetry/report.go:57 ⋮ [n1,client=34.74.3.67:51630,user=root] 125 +  | 	github.com/cockroachdb/cockroach/pkg/sql/opt/ordering/ordering.go:66
E220916 06:44:56.948222 960 sql/sqltelemetry/report.go:57 ⋮ [n1,client=34.74.3.67:51630,user=root] 125 +  | github.com/cockroachdb/cockroach/pkg/sql/opt/xform.(*Optimizer).setLowestCostTree
E220916 06:44:56.948222 960 sql/sqltelemetry/report.go:57 ⋮ [n1,client=34.74.3.67:51630,user=root] 125 +  | 	github.com/cockroachdb/cockroach/pkg/sql/opt/xform/optimizer.go:778
E220916 06:44:56.948222 960 sql/sqltelemetry/report.go:57 ⋮ [n1,client=34.74.3.67:51630,user=root] 125 +  | github.com/cockroachdb/cockroach/pkg/sql/opt/xform.(*Optimizer).setLowestCostTree
E220916 06:44:56.948222 960 sql/sqltelemetry/report.go:57 ⋮ [n1,client=34.74.3.67:51630,user=root] 125 +  | 	github.com/cockroachdb/cockroach/pkg/sql/opt/xform/optimizer.go:765
E220916 06:44:56.948222 960 sql/sqltelemetry/report.go:57 ⋮ [n1,client=34.74.3.67:51630,user=root] 125 +  | github.com/cockroachdb/cockroach/pkg/sql/opt/xform.(*Optimizer).setLowestCostTree
E220916 06:44:56.948222 960 sql/sqltelemetry/report.go:57 ⋮ [n1,client=34.74.3.67:51630,user=root] 125 +  | 	github.com/cockroachdb/cockroach/pkg/sql/opt/xform/optimizer.go:765
E220916 06:44:56.948222 960 sql/sqltelemetry/report.go:57 ⋮ [n1,client=34.74.3.67:51630,user=root] 125 +  | github.com/cockroachdb/cockroach/pkg/sql/opt/xform.(*Optimizer).Optimize
E220916 06:44:56.948222 960 sql/sqltelemetry/report.go:57 ⋮ [n1,client=34.74.3.67:51630,user=root] 125 +  | 	github.com/cockroachdb/cockroach/pkg/sql/opt/xform/optimizer.go:266
E220916 06:44:56.948222 960 sql/sqltelemetry/report.go:57 ⋮ [n1,client=34.74.3.67:51630,user=root] 125 +  | github.com/cockroachdb/cockroach/pkg/sql.(*optPlanningCtx).makeQueryIndexRecommendation
E220916 06:44:56.948222 960 sql/sqltelemetry/report.go:57 ⋮ [n1,client=34.74.3.67:51630,user=root] 125 +  | 	github.com/cockroachdb/cockroach/pkg/sql/plan_opt.go:745
E220916 06:44:56.948222 960 sql/sqltelemetry/report.go:57 ⋮ [n1,client=34.74.3.67:51630,user=root] 125 +  | github.com/cockroachdb/cockroach/pkg/sql.(*optPlanningCtx).buildExecMemo
E220916 06:44:56.948222 960 sql/sqltelemetry/report.go:57 ⋮ [n1,client=34.74.3.67:51630,user=root] 125 +  | 	github.com/cockroachdb/cockroach/pkg/sql/plan_opt.go:570
E220916 06:44:56.948222 960 sql/sqltelemetry/report.go:57 ⋮ [n1,client=34.74.3.67:51630,user=root] 125 +  | github.com/cockroachdb/cockroach/pkg/sql.(*planner).makeOptimizerPlan
E220916 06:44:56.948222 960 sql/sqltelemetry/report.go:57 ⋮ [n1,client=34.74.3.67:51630,user=root] 125 +  | 	github.com/cockroachdb/cockroach/pkg/sql/plan_opt.go:233
E220916 06:44:56.948222 960 sql/sqltelemetry/report.go:57 ⋮ [n1,client=34.74.3.67:51630,user=root] 125 +  | github.com/cockroachdb/cockroach/pkg/sql.(*connExecutor).makeExecPlan
E220916 06:44:56.948222 960 sql/sqltelemetry/report.go:57 ⋮ [n1,client=34.74.3.67:51630,user=root] 125 +  | 	github.com/cockroachdb/cockroach/pkg/sql/conn_executor_exec.go:1432
E220916 06:44:56.948222 960 sql/sqltelemetry/report.go:57 ⋮ [n1,client=34.74.3.67:51630,user=root] 125 +  | github.com/cockroachdb/cockroach/pkg/sql.(*connExecutor).dispatchToExecutionEngine
E220916 06:44:56.948222 960 sql/sqltelemetry/report.go:57 ⋮ [n1,client=34.74.3.67:51630,user=root] 125 +  | 	github.com/cockroachdb/cockroach/pkg/sql/conn_executor_exec.go:1058
E220916 06:44:56.948222 960 sql/sqltelemetry/report.go:57 ⋮ [n1,client=34.74.3.67:51630,user=root] 125 +  | github.com/cockroachdb/cockroach/pkg/sql.(*connExecutor).execStmtInOpenState
E220916 06:44:56.948222 960 sql/sqltelemetry/report.go:57 ⋮ [n1,client=34.74.3.67:51630,user=root] 125 +  | 	github.com/cockroachdb/cockroach/pkg/sql/conn_executor_exec.go:687
E220916 06:44:56.948222 960 sql/sqltelemetry/report.go:57 ⋮ [n1,client=34.74.3.67:51630,user=root] 125 +  | github.com/cockroachdb/cockroach/pkg/sql.(*connExecutor).execStmt.func1
E220916 06:44:56.948222 960 sql/sqltelemetry/report.go:57 ⋮ [n1,client=34.74.3.67:51630,user=root] 125 +  | 	github.com/cockroachdb/cockroach/pkg/sql/conn_executor_exec.go:129
E220916 06:44:56.948222 960 sql/sqltelemetry/report.go:57 ⋮ [n1,client=34.74.3.67:51630,user=root] 125 +  | github.com/cockroachdb/cockroach/pkg/sql.(*connExecutor).execWithProfiling
E220916 06:44:56.948222 960 sql/sqltelemetry/report.go:57 ⋮ [n1,client=34.74.3.67:51630,user=root] 125 +  | 	github.com/cockroachdb/cockroach/pkg/sql/conn_executor_exec.go:2382
E220916 06:44:56.948222 960 sql/sqltelemetry/report.go:57 ⋮ [n1,client=34.74.3.67:51630,user=root] 125 +  | github.com/cockroachdb/cockroach/pkg/sql.(*connExecutor).execStmt
E220916 06:44:56.948222 960 sql/sqltelemetry/report.go:57 ⋮ [n1,client=34.74.3.67:51630,user=root] 125 +  | 	github.com/cockroachdb/cockroach/pkg/sql/conn_executor_exec.go:128
E220916 06:44:56.948222 960 sql/sqltelemetry/report.go:57 ⋮ [n1,client=34.74.3.67:51630,user=root] 125 +  | github.com/cockroachdb/cockroach/pkg/sql.(*connExecutor).execCmd.func1
E220916 06:44:56.948222 960 sql/sqltelemetry/report.go:57 ⋮ [n1,client=34.74.3.67:51630,user=root] 125 +  | 	github.com/cockroachdb/cockroach/pkg/sql/conn_executor.go:1919
E220916 06:44:56.948222 960 sql/sqltelemetry/report.go:57 ⋮ [n1,client=34.74.3.67:51630,user=root] 125 +  | github.com/cockroachdb/cockroach/pkg/sql.(*connExecutor).execCmd
E220916 06:44:56.948222 960 sql/sqltelemetry/report.go:57 ⋮ [n1,client=34.74.3.67:51630,user=root] 125 +  | 	github.com/cockroachdb/cockroach/pkg/sql/conn_executor.go:1923
E220916 06:44:56.948222 960 sql/sqltelemetry/report.go:57 ⋮ [n1,client=34.74.3.67:51630,user=root] 125 +  | github.com/cockroachdb/cockroach/pkg/sql.(*connExecutor).run
E220916 06:44:56.948222 960 sql/sqltelemetry/report.go:57 ⋮ [n1,client=34.74.3.67:51630,user=root] 125 +  | 	github.com/cockroachdb/cockroach/pkg/sql/conn_executor.go:1845
E220916 06:44:56.948222 960 sql/sqltelemetry/report.go:57 ⋮ [n1,client=34.74.3.67:51630,user=root] 125 +  | github.com/cockroachdb/cockroach/pkg/sql.(*Server).ServeConn
E220916 06:44:56.948222 960 sql/sqltelemetry/report.go:57 ⋮ [n1,client=34.74.3.67:51630,user=root] 125 +  | 	github.com/cockroachdb/cockroach/pkg/sql/conn_executor.go:827
E220916 06:44:56.948222 960 sql/sqltelemetry/report.go:57 ⋮ [n1,client=34.74.3.67:51630,user=root] 125 +  | github.com/cockroachdb/cockroach/pkg/sql/pgwire.(*conn).processCommandsAsync.func1
E220916 06:44:56.948222 960 sql/sqltelemetry/report.go:57 ⋮ [n1,client=34.74.3.67:51630,user=root] 125 +  | 	github.com/cockroachdb/cockroach/pkg/sql/pgwire/conn.go:728
E220916 06:44:56.948222 960 sql/sqltelemetry/report.go:57 ⋮ [n1,client=34.74.3.67:51630,user=root] 125 +  | runtime.goexit
E220916 06:44:56.948222 960 sql/sqltelemetry/report.go:57 ⋮ [n1,client=34.74.3.67:51630,user=root] 125 +  | 

I actually added this panic check in #86193. projectCanProvideOrdering allows the required ordering to refer to input columns, which may not be output columns, so probably instead of checking that the ordering columns are a subset of output columns, we need to take the intersection between ordering and output columns when remapping the provided ordering. Unfortunately it seems difficult to get a reproduction, since I don't see a way to connect this panic with the query that triggered it.

@DrewKimball
Copy link
Collaborator

WRT the timeout, the most likely candidate seems to be that we need (a) cancel-checking and (b) better output batch sizing in the vectorized window function operators. The query that was executing during the timeout was probably this one:

SELECT '=.f':::STRING AS col_8308 
FROM (
  SELECT concat_agg(tab_2998.col3_2::STRING ORDER BY tab_2998.col3_2::STRING)::STRING AS col_8306
  FROM defaultdb.public.table3@[0] AS tab_2997 
  JOIN defaultdb.public.table3@[0] AS tab_2998 
  ON ((tab_2997.col3_2) = (tab_2998.col3_2)) 
  AND ((tab_2997.crdb_internal_mvcc_timestamp) = (tab_2998.crdb_internal_mvcc_timestamp)) 
  WHERE EXISTS (SELECT tab_3000.col1_0 AS col_8305 FROM defaultdb.public.table1 AS tab_2999 
  JOIN defaultdb.public.table1 AS tab_3000 
  ON (((tab_2999.col1_2) = (tab_3000.col1_2)) 
  AND ((tab_2999.col1_3) = (tab_3000.col1_3))) 
  AND ((tab_2999.col1_0) = (tab_3000.col1_0)) 
  ORDER BY tab_2999.col1_0 ASC
) 
GROUP BY tab_2998.col3_2 
ORDER BY tab_2998.col3_2) AS tab_3001 (col_8307) 
WHERE tab_3001.col_8307 ~* tab_3001.col_8307

And the heap profile looks like this:
Screen Shot 2022-09-16 at 2 44 40 AM

@cockroach-teamcity

This comment was marked as duplicate.

@DrewKimball
Copy link
Collaborator

Most recent failure is a dup of #86790

@michae2 michae2 changed the title roachtest: costfuzz failed costfuzz: expected required columns to be a subset of output columns in projectBuildProvided Sep 19, 2022
@mgartner
Copy link
Collaborator

mgartner commented Sep 19, 2022

I don't think this should block the release, so I'm removing the label. LMK if you disagree.

Nevermind, missed the other error above.

@mgartner mgartner added release-blocker Indicates a release-blocker. Use with branch-release-2x.x label to denote which branch is blocked. and removed release-blocker Indicates a release-blocker. Use with branch-release-2x.x label to denote which branch is blocked. labels Sep 19, 2022
@mgartner
Copy link
Collaborator

I actually added this panic check in #86193. projectCanProvideOrdering allows the required ordering to refer to input columns, which may not be output columns, so probably instead of checking that the ordering columns are a subset of output columns, we need to take the intersection between ordering and output columns when remapping the provided ordering. Unfortunately it seems difficult to get a reproduction, since I don't see a way to connect this panic with the query that triggered it.

@DrewKimball one that that stands out to me in that stack trace is this line:

... | github.com/cockroachdb/cockroach/pkg/sql.(*optPlanningCtx).makeQueryIndexRecommendation

Maybe the panic is only reproducible when making index recommendations due to a bug or incorrect assumption in the implementation of hypothetical indexes and tables?

@DrewKimball
Copy link
Collaborator

Maybe the panic is only reproducible when making index recommendations due to a bug or incorrect assumption in the implementation of hypothetical indexes and tables?

Maybe... I was trying to figure out how this could possibly happen to get a repro, and it doesn't really make sense to me - how could we require an ordering that references non-output columns? So something like that might explain how this could happen.

@mgartner
Copy link
Collaborator

Maybe... I was trying to figure out how this could possibly happen to get a repro, and it doesn't really make sense to me - how could we require an ordering that references non-output columns? So something like that might explain how this could happen.

We need to make sure that panics are correctly caught in the index recommendation engine. It appears that they are not because this panic crashed the node. Once we fix that, the panic should cause a "regular" test failure and this should be easier to diagnose. I've created a separate issue to track that, #88246. I think we need to urgently fix it, but I'm hesistant to label it a release blocker because it's present on previous versions. That being said, v22.2 introduces index recommendations in the statements page of the UI, making this crash more likely.

I'm going to remove the release-blocker labels on this issue until we get a reproduction that proves its severity.

@mgartner mgartner removed release-blocker Indicates a release-blocker. Use with branch-release-2x.x label to denote which branch is blocked. blocks-22.2.0-beta.1 labels Sep 20, 2022
@DrewKimball
Copy link
Collaborator

@mgartner are you sure the node crashed? I can't find any reason why a panic wouldn't be caught here, since it did originate from the Optimize call in makeQueryIndexRecommendation.

@DrewKimball
Copy link
Collaborator

I think probably we're not getting any test output for these panics because the costfuzzer skips queries that fail on the first run:

// First, run the statement without cost perturbation.
controlRows, err := h.runQuery(stmt)
if err != nil {
// Skip statements that fail with an error.
//nolint:returnerrcheck
return nil
}

Oh, or maybe running the query doesn't fail, but running EXPLAIN on it does. Costfuzz ignores failures when getting the query plan:
// First use EXPLAIN to try to get the query plan. This is best-effort, and
// only for the purpose of debugging, so ignore any errors.
explainStmt := "EXPLAIN " + stmt
explainRows, err := runQueryImpl(explainStmt)
if err == nil {
h.statementsAndExplains = append(
h.statementsAndExplains, sqlAndOutput{sql: explainStmt, output: explainRows},
)
}

We could catch errors like this that only show when running EXPLAIN by having sqlsmith run every test query with EXPLAIN.

DrewKimball added a commit to DrewKimball/cockroach that referenced this issue Sep 21, 2022
This commit modifies the SqlSmith roachtest to run each generated query
with explain. This should allow the test to catch planning errors that
do not happen during normal execution.

Informs cockroachdb#88037

Release note: None
DrewKimball added a commit to DrewKimball/cockroach that referenced this issue Sep 21, 2022
This commit modifies the SqlSmith roachtest to run each generated query
with explain. This should allow the test to catch planning errors that
do not happen during normal execution.

Informs cockroachdb#88037

Release note: None
craig bot pushed a commit that referenced this issue Sep 21, 2022
88136: backupccl: add regions column to SHOW BACKUP r=msbutler a=baoalvin1

Fixes #79681

Add regions column to display multi-region information for backup databases.

Release note (sql change): Previously, the user did not have an easy way to see if a backed up database is multi-region. This change adds the `regions` column to the `SHOW BACKUP` command which will output a string of `ALTER DATABASE` commands if the database is a multi-region database and `NULL` for everything else.

88333: opt: run sqlsmith roachtest queries with EXPLAIN r=DrewKimball a=DrewKimball

This commit modifies the SqlSmith roachtest to run each generated query with explain. This should allow the test to catch planning errors that do not happen during normal execution.

Informs #88037

Release note: None

88343: sql: turn off plan sampling by default r=maryliag a=maryliag

Previously, we were sampling plans for fingerprints and saving to statement_statistics tables. Now that we are saving plan hash and plan gist (that allow us to decode back to the plan) we are no longer using the sampled plan anywhere. Since this is a heavy opperation, we are turning it off by default, but changing the default value of `sql.metrics.statement_details.plan_collection.enabled` to `false`.
If we don't receive feedback about turning it back on, we can remove this sampling entirely.

Partially addresses #77944

Release note (sql change): Change the default value of `sql.metrics.statement_details.plan_collection.enabled` to false, since we no longer use this information
anywhere.

88391: cfetcher: correctly update the limit hint r=yuzefovich a=yuzefovich

In 41fa8b6 (which was supposed to be a "noop" refactor) we introduced a bug which made it so that we no longer update the remaining limit hint correctly. As a result, the cFetcher might no longer respect the limit hint. What makes things worse is the fact that the KV layer still does everything correctly, so when the cFetcher asks for more rows that exceed the limit, the KV layer does a BatchRequest with 10x of the original limit. This is now fixed by correctly updating the limit hint right before emitting the batch.

Addresses: #88382.

Release note (bug fix): CockroachDB no longer fetches unnecessary rows for queries with LIMITs. The bug was introduced in 22.1.7.

88399: opt: mark SimplifyRange as essential r=DrewKimball a=DrewKimball

This commit marks the `SimplifyRange` normalization rule as essential during random rule-disabling tests. This is necessary because `RangeExpr` is expected to maintain the invariant that its input is always an `AndExpr`. Other rules can replace the `AndExpr` with a different expression over the course of normalization, at which point the `RangeExpr` needs to be removed. Otherwise, various code-paths that depend on the invariant may panic (for example, predicate implication).

Fixes #88352

Release note: None

Co-authored-by: Alvin Bao <[email protected]>
Co-authored-by: DrewKimball <[email protected]>
Co-authored-by: Marylia Gutierrez <[email protected]>
Co-authored-by: Yahor Yuzefovich <[email protected]>
DrewKimball added a commit to DrewKimball/cockroach that referenced this issue Sep 22, 2022
Previously, `EXPLAIN` operators could require an ordering on non-output
columns from their enclosed expression, which causes a panic. This
could happen after column-pruning rules fired. This commit modifies the
order-building logic to project the ordering required of the child of
an `EXPLAIN` operator to only reference output columns.

Fixes cockroachdb#88037

Release note (bug fix): Fixed a longstanding bug that could cause
a panic when running a query with `EXPLAIN` that attempts to order
on a non-output column.
craig bot pushed a commit that referenced this issue Sep 25, 2022
88441: opt: project required ordering for EXPLAIN to input columns r=mgartner,yuzefovich a=DrewKimball

Previously, `EXPLAIN` operators could require an ordering on non-output columns from their enclosed expression, which causes a panic. This could happen after column-pruning rules fired. This commit modifies the order-building logic to project the ordering required of the child of an `EXPLAIN` operator to only reference output columns.

Fixes #88037

Release note (bug fix): Fixed a longstanding bug that could cause a panic when running a query with `EXPLAIN` that attempts to order on a non-output column.

Co-authored-by: DrewKimball <[email protected]>
@craig craig bot closed this as completed in 884fc3a Sep 25, 2022
blathers-crl bot pushed a commit that referenced this issue Sep 25, 2022
Previously, `EXPLAIN` operators could require an ordering on non-output
columns from their enclosed expression, which causes a panic. This
could happen after column-pruning rules fired. This commit modifies the
order-building logic to project the ordering required of the child of
an `EXPLAIN` operator to only reference output columns.

Fixes #88037

Release note (bug fix): Fixed a longstanding bug that could cause
a panic when running a query with `EXPLAIN` that attempts to order
on a non-output column.
blathers-crl bot pushed a commit that referenced this issue Sep 25, 2022
Previously, `EXPLAIN` operators could require an ordering on non-output
columns from their enclosed expression, which causes a panic. This
could happen after column-pruning rules fired. This commit modifies the
order-building logic to project the ordering required of the child of
an `EXPLAIN` operator to only reference output columns.

Fixes #88037

Release note (bug fix): Fixed a longstanding bug that could cause
a panic when running a query with `EXPLAIN` that attempts to order
on a non-output column.
@rytaft rytaft added the sync-me label Jul 11, 2023
@mgartner mgartner moved this to Done in SQL Queries Jul 24, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
branch-master Failures and bugs on the master branch. C-test-failure Broken test (automatically or manually discovered). O-roachtest O-robot Originated from a bot. sync-me T-sql-queries SQL Queries Team
Projects
Archived in project
Development

Successfully merging a pull request may close this issue.

5 participants