cockroachdb / cockroach

CockroachDB — the cloud native, distributed SQL database designed for high availability, effortless scale, and control over data placement.
https://www.cockroachlabs.com
Other
29.86k stars 3.77k forks source link

sql: panic: MoveToDraining called in state stateDraining #36433

Closed maddyblue closed 5 years ago

maddyblue commented 5 years ago
CREATE TABLE t (
    _bool BOOL,
    _bytes BYTES,
    _date DATE,
    _decimal DECIMAL,
    _float4 FLOAT4,
    _float8 FLOAT8,
    _inet INET,
    _int4 INT4,
    _int8 INT8,
    _interval INTERVAL,
    _jsonb JSONB,
    _string STRING,
    _time TIME,
    _timestamp TIMESTAMP,
    _timestamptz TIMESTAMPTZ,
    _uuid UUID
);

SELECT
    isnan((-0.04126758378872086):::FLOAT8::FLOAT8)::BOOL AS col_27,
    gen_random_uuid()::UUID AS col_28,
    crdb_internal.cluster_id()::UUID AS col_29,
    gen_random_uuid()::UUID AS col_30,
    to_ip('#>z':::STRING::STRING)::BYTES AS col_31,
    '12:38:57.167207':::TIME AS col_32,
    count_rows()::INT8 AS col_33,
    ln(
        CASE
        WHEN (false OR false) THEN (-6.765390955916511392E+19):::DECIMAL
        ELSE 0.0210542374674774761:::DECIMAL
        END::DECIMAL
    )::DECIMAL
        AS col_34,
    array_position(ARRAY[2181786769:::OID]::OID[], 627799178:::OID::OID)::INT8 AS col_35,
    isnan((NULL::DECIMAL / 8.288291705945117334E+24:::DECIMAL::DECIMAL)::DECIMAL)::BOOL AS col_36,
    gen_random_uuid()::UUID AS col_37,
    COALESCE('01:16:51.403842':::TIME, '19:29:55.498075':::TIME) AS col_38,
    abs(
        (
            WITH
                with_4 (col_39, col_40, col_41, col_42, col_43, col_44, col_45, col_46, col_47)
                    AS (
                        SELECT
                            *
                        FROM
                            (
                                VALUES
                                    (
                                        NULL,
                                        e'\\xcca3b867791de31ba0':::BYTES,
                                        (-61261.5973833600014):::DECIMAL,
                                        B'01',
                                        4133167488670398161:::INT8,
                                        true,
                                        '-14 years -11 mons -727 days -04:04:25.236317':::INTERVAL,
                                        B'010011101010000100110000010010100000010101010101011010001110100111101',
                                        '06:40:50.860603':::TIME
                                    ),
                                    (
                                        '1970-01-03 11:50:36.000239+00:00':::TIMESTAMPTZ,
                                        e'\\x30a710a00ab2eb':::BYTES,
                                        5.624295195236056932E+35:::DECIMAL,
                                        B'101101101101001111000010001101110100100101000101011011110001010001111100111',
                                        5569753723400578164:::INT8,
                                        NULL,
                                        '54 years 11 mons 975 days 06:31:18.019932':::INTERVAL,
                                        B'011000001001001001001100011011101010111000001001111110',
                                        '02:50:35.967215':::TIME
                                    ),
                                    (
                                        '1970-01-02 16:45:38.000367+00:00':::TIMESTAMPTZ,
                                        NULL,
                                        (-2.806798959458899335E+23):::DECIMAL,
                                        B'10011111111000000110101101',
                                        8564315741260337502:::INT8,
                                        true,
                                        NULL,
                                        B'01011001101001001111010000011011110',
                                        '11:41:35.710823':::TIME
                                    )
                            )
                                AS tab_22 (col_39, col_40, col_41, col_42, col_43, col_44, col_45, col_46, col_47)
                    )
            SELECT
                with_4.col_41 AS col_48
            FROM
                with_4
            LIMIT
                1:::INT8
        )::DECIMAL
    )::DECIMAL
        AS col_49,
    date_trunc(NULL::STRING, '1970-01-08 13:11:58.000582+00:00':::TIMESTAMP::TIMESTAMP)::TIMESTAMP AS col_50,
    115304018:::OID AS col_51,
    lower('Qnn':::STRING::STRING)::STRING AS col_52
FROM
    [
        UPDATE
            defaultdb.public.t AS tab_21
        SET
            _timestamp = '1970-01-02 13:20:42.000015+00:00':::TIMESTAMP, _interval = tab_21._interval
        WHERE
            false
        RETURNING
            '1970-01-11 00:57:01.000798+00:00':::TIMESTAMPTZ AS ret_15, _inet AS ret_16
    ]
WHERE
    NULL
GROUP BY
    ret_15, ret_16
ORDER BY
    ret_15
LIMIT
    71:::INT8;
F190402 18:23:56.118691 338 sql/distsqlrun/processors.go:648  [n1,client=127.0.0.1:41132,user=root] MoveToDraining called in state stateDraining with err: to_ip(): invalid IP format: '#>z'
goroutine 338 [running]:
github.com/cockroachdb/cockroach/pkg/util/log.getStacks(0xc000057b00, 0xc000057bc0, 0x52bcf00, 0x1c)
    /home/mjibson/go/src/github.com/cockroachdb/cockroach/pkg/util/log/clog.go:1020 +0xd4
github.com/cockroachdb/cockroach/pkg/util/log.(*loggingT).outputLogEntry(0x5a4f920, 0xc000000004, 0x52bcfbd, 0x1c, 0x288, 0xc001932780, 0x7e)
    /home/mjibson/go/src/github.com/cockroachdb/cockroach/pkg/util/log/clog.go:876 +0x95a
github.com/cockroachdb/cockroach/pkg/util/log.addStructured(0x3988bc0, 0xc001663440, 0x4, 0x2, 0x327eccb, 0x2e, 0xc00145bc60, 0x2, 0x2)
    /home/mjibson/go/src/github.com/cockroachdb/cockroach/pkg/util/log/structured.go:85 +0x2d8
github.com/cockroachdb/cockroach/pkg/util/log.logDepth(0x3988bc0, 0xc001663440, 0x1, 0xc000000004, 0x327eccb, 0x2e, 0xc00145bc60, 0x2, 0x2)
    /home/mjibson/go/src/github.com/cockroachdb/cockroach/pkg/util/log/log.go:71 +0x8c
github.com/cockroachdb/cockroach/pkg/util/log.Fatalf(0x3988bc0, 0xc001663440, 0x327eccb, 0x2e, 0xc00145bc60, 0x2, 0x2)
    /home/mjibson/go/src/github.com/cockroachdb/cockroach/pkg/util/log/log.go:182 +0x7e
github.com/cockroachdb/cockroach/pkg/sql/distsqlrun.(*ProcessorBase).MoveToDraining(0xc00101d680, 0x394f980, 0xc0014d8b80)
    /home/mjibson/go/src/github.com/cockroachdb/cockroach/pkg/sql/distsqlrun/processors.go:648 +0x2f9
github.com/cockroachdb/cockroach/pkg/sql/distsqlrun.(*ProcessorBase).ProcessRowHelper(0xc00101d680, 0xc001663b00, 0x1, 0x1, 0x1, 0x1, 0xc000341300)
    /home/mjibson/go/src/github.com/cockroachdb/cockroach/pkg/sql/distsqlrun/processors.go:781 +0x121
github.com/cockroachdb/cockroach/pkg/sql/distsqlrun.(*countAggregator).Next(0xc00101d680, 0xc001663440, 0x3211c7e, 0xa, 0x3988bc0)
    /home/mjibson/go/src/github.com/cockroachdb/cockroach/pkg/sql/distsqlrun/countrows.go:99 +0x154
github.com/cockroachdb/cockroach/pkg/sql/distsqlrun.Run(0x3988bc0, 0xc001663440, 0x3994d00, 0xc00101d680, 0x3979f80, 0xc001581880)
    /home/mjibson/go/src/github.com/cockroachdb/cockroach/pkg/sql/distsqlrun/base.go:174 +0x35
github.com/cockroachdb/cockroach/pkg/sql/distsqlrun.(*ProcessorBase).Run(0xc00101d680, 0x3988bc0, 0xc001663440)
    /home/mjibson/go/src/github.com/cockroachdb/cockroach/pkg/sql/distsqlrun/processors.go:802 +0x92
github.com/cockroachdb/cockroach/pkg/sql/distsqlrun.(*Flow).Run(0xc0015881e0, 0x3988bc0, 0xc001663440, 0x3378130, 0x0, 0x0)
    /home/mjibson/go/src/github.com/cockroachdb/cockroach/pkg/sql/distsqlrun/flow.go:627 +0x1e9
github.com/cockroachdb/cockroach/pkg/sql.(*DistSQLPlanner).Run(0xc0008288c0, 0xc001824c00, 0xc0019ff4d0, 0xc00145c818, 0xc000021b80, 0xc0009e7f10, 0x0)
    /home/mjibson/go/src/github.com/cockroachdb/cockroach/pkg/sql/distsql_running.go:252 +0x8a0
github.com/cockroachdb/cockroach/pkg/sql.(*DistSQLPlanner).PlanAndRun(0xc0008288c0, 0x3988bc0, 0xc0019357d0, 0xc0009e7f10, 0xc001824c00, 0xc0019ff4d0, 0x398a840, 0xc001637b00, 0xc000021b80)
    /home/mjibson/go/src/github.com/cockroachdb/cockroach/pkg/sql/distsql_running.go:840 +0x227
github.com/cockroachdb/cockroach/pkg/sql.(*connExecutor).execWithDistSQLEngine(0xc0009e7b00, 0x3988bc0, 0xc0019357d0, 0xc0009e7e50, 0x3, 0x7f22672a25d8, 0xc000c75970, 0x0, 0x0, 0x0)
    /home/mjibson/go/src/github.com/cockroachdb/cockroach/pkg/sql/conn_executor_exec.go:1121 +0x283
github.com/cockroachdb/cockroach/pkg/sql.(*connExecutor).dispatchToExecutionEngine(0xc0009e7b00, 0x3988bc0, 0xc0019357d0, 0xc0009e7e50, 0x7f22672a25d8, 0xc000c75970, 0x0, 0x0)
    /home/mjibson/go/src/github.com/cockroachdb/cockroach/pkg/sql/conn_executor_exec.go:957 +0x658
github.com/cockroachdb/cockroach/pkg/sql.(*connExecutor).execStmtInOpenState(0xc0009e7b00, 0x3988bc0, 0xc0019357d0, 0x398e840, 0xc001a21a00, 0xc001a1e000, 0xb3b, 0x0, 0x0, 0x0, ...)
    /home/mjibson/go/src/github.com/cockroachdb/cockroach/pkg/sql/conn_executor_exec.go:459 +0xe03
github.com/cockroachdb/cockroach/pkg/sql.(*connExecutor).execStmt(0xc0009e7b00, 0x3988bc0, 0xc0019357d0, 0x398e840, 0xc001a21a00, 0xc001a1e000, 0xb3b, 0x0, 0x0, 0x0, ...)
    /home/mjibson/go/src/github.com/cockroachdb/cockroach/pkg/sql/conn_executor_exec.go:101 +0x610
github.com/cockroachdb/cockroach/pkg/sql.(*connExecutor).run(0xc0009e7b00, 0x3988b00, 0xc0014e2080, 0xc000110e78, 0x5400, 0x15000, 0xc000110f10, 0xc0004d6320, 0x0, 0x0)
    /home/mjibson/go/src/github.com/cockroachdb/cockroach/pkg/sql/conn_executor.go:1189 +0x2270
github.com/cockroachdb/cockroach/pkg/sql.(*Server).ServeConn(0xc000c66580, 0x3988b00, 0xc0014e2080, 0xc0009e7b00, 0x5400, 0x15000, 0xc000110f10, 0xc0004d6320, 0x0, 0x0)
    /home/mjibson/go/src/github.com/cockroachdb/cockroach/pkg/sql/conn_executor.go:436 +0xce
github.com/cockroachdb/cockroach/pkg/sql/pgwire.(*conn).processCommandsAsync.func1(0xc0003ac059, 0xc00041c0c0, 0x3988b00, 0xc0014e2080, 0xc0004d6320, 0xc000c66580, 0xc000a9e000, 0x398c840, 0xc00041c0a0, 0xc001608180, ...)
    /home/mjibson/go/src/github.com/cockroachdb/cockroach/pkg/sql/pgwire/conn.go:581 +0x21f
created by github.com/cockroachdb/cockroach/pkg/sql/pgwire.(*conn).processCommandsAsync
    /home/mjibson/go/src/github.com/cockroachdb/cockroach/pkg/sql/pgwire/conn.go:516 +0x17b
jordanlewis commented 5 years ago

@asubiotto would you mind taking a first cut?

maddyblue commented 5 years ago

Here's another maybe with the same root cause:

WITH
    with_13593 (col_108478, col_108479, col_108480, col_108481, col_108482, col_108483)
        AS (
            SELECT
                *
            FROM
                (
                    VALUES
                        (
                            jsonb_array_length(('true':::JSONB::JSONB#>ARRAY[e'\x0evu\r2\x01':::STRING]::STRING[])::JSONB)::INT8,
                            '1970-01-11 18:13:49.000906+00:00':::TIMESTAMPTZ,
                            NULL,
                            '\xf69070':::BYTES,
                            '1970-01-10 16:37:10.000717+00:00':::TIMESTAMP,
                            NULL
                        ),
                        (
                            6365703866072078687:::INT8,
                            '1970-01-10 00:31:23.000401+00:00':::TIMESTAMPTZ,
                            NULL,
                            '\x45ce3016ceef3d18f0':::BYTES,
                            '1970-01-09 03:36:12.000839+00:00':::TIMESTAMP,
                            false
                        ),
                        (
                            NULL,
                            NULL,
                            (-5264760556366851231):::INT8,
                            '\x2278bd15d86e54f5c0':::BYTES,
                            '1970-01-12 04:45:38.000384+00:00':::TIMESTAMP,
                            true
                        )
                )
                    AS tab_17740 (col_108478, col_108479, col_108480, col_108481, col_108482, col_108483)
        ),
    with_13594 (col_108484) AS (SELECT * FROM (VALUES (NULL)) AS tab_17741 (col_108484)),
    with_13595 (col_108485, col_108486, col_108487)
        AS (
            SELECT
                *
            FROM
                (
                    VALUES
                        ('1984-09-29':::DATE, '226.52.51.16/0':::INET, (-0.33679706498850004):::FLOAT8),
                        (
                            '1987-09-30':::DATE,
                            '893f:9e22:e29a:820a:596c:c7b9:224f:7331/107':::INET,
                            (-0.2736337302070583):::FLOAT8
                        )
                )
                    AS tab_17742 (col_108485, col_108486, col_108487)
        )
SELECT
    experimental_uuid_v4()::BYTES AS col_108488,
    netmask('1158:ed55:4dc6:a60f:dc6a:53a1:9493:47f0/17':::INET::INET)::INET AS col_108489,
    rpad(e'\x0b#b2\b\x15- ':::STRING::STRING, 7886817204720746722:::INT8::INT8)::STRING AS col_108490,
    count_rows()::INT8 AS col_108491
FROM
    with_13594
WHERE
    true
GROUP BY
    with_13594.col_108484
ORDER BY
    with_13594.col_108484 DESC
LIMIT
    93:::INT8;
jordanlewis commented 5 years ago

Looks like there's a simple bug in the count rows processor I added a while back. Will send a fix.

jordanlewis commented 5 years ago

Here's a micro repro:

select count(*)::text||lpad('foo', 23984729384723984) from (values(1));