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

vtgate panics if there are no vttablets and vtctlds #6117

Closed
sougou opened this issue Apr 26, 2020 · 1 comment
Closed

vtgate panics if there are no vttablets and vtctlds #6117

sougou opened this issue Apr 26, 2020 · 1 comment
Assignees
Milestone

Comments

@sougou
Copy link
Contributor

sougou commented Apr 26, 2020

Repro:
Bring up etcd
Bring up vtgate
Run mysql client and issue a show databases

runtime error: invalid memory address or nil pointer dereference
/usr/local/go/src/runtime/panic.go:212 (0x44cbd9)
        panicmem: panic(memoryError)
/usr/local/go/src/runtime/signal_unix.go:687 (0x44ca28)
        sigpanic: panicmem()
/home/sougou/dev/src/vitess.io/vitess/go/vt/vtgate/vcursor_impl.go:388 (0xb954f8)
        io/vitess/go/vt/vtgate.parseDestinationTarget: if destKeyspace == "" && len(vschema.Keyspaces) == 1 {
/home/sougou/dev/src/vitess.io/vitess/go/vt/vtgate/vcursor_impl.go:135 (0xb934ae)
        io/vitess/go/vt/vtgate.newVCursorImpl: keyspace, tabletType, destination, err := parseDestinationTarget(safeSession.TargetString, vschema)
/home/sougou/dev/src/vitess.io/vitess/go/vt/vtgate/plan_execute.go:98 (0xb85fa9)
        io/vitess/go/vt/vtgate.(*planExecute).execute: vcursor, err := newVCursorImpl(ctx, safeSession, comments, e.e, logStats, e.e.vm, e.e.resolver.resolver)
/home/sougou/dev/src/vitess.io/vitess/go/vt/vtgate/fallback_executor.go:40 (0xb84a34)
        io/vitess/go/vt/vtgate.(*fallbackExecutor).execute: qr, err := f.exA.execute(ctx, safeSession, sql, bindVars, logStats)
/home/sougou/dev/src/vitess.io/vitess/go/vt/vtgate/executor.go:162 (0xb7462c)
        io/vitess/go/vt/vtgate.(*Executor).Execute: result, err = e.exec.execute(ctx, safeSession, sql, bindVars, logStats)
/home/sougou/dev/src/vitess.io/vitess/go/vt/vtgate/vtgate.go:246 (0xb9abf2)
        io/vitess/go/vt/vtgate.(*VTGate).Execute: qr, err = vtg.executor.Execute(ctx, "Execute", NewSafeSession(session), sql, bindVariables)
/home/sougou/dev/src/vitess.io/vitess/go/vt/vtgate/plugin_mysql_server.go:137 (0xb876b7)
        io/vitess/go/vt/vtgate.(*vtgateHandler).ConnectionClosed: _, _, _ = vh.vtg.Execute(ctx, session, "rollback", make(map[string]*querypb.BindVariable))
/usr/local/go/src/runtime/panic.go:973 (0x435d35)
        gopanic: reflectcall(nil, unsafe.Pointer(d.fn), deferArgs(d), uint32(d.siz), uint32(d.siz))
/usr/local/go/src/runtime/panic.go:212 (0x44cbd9)
        panicmem: panic(memoryError)
/usr/local/go/src/runtime/signal_unix.go:687 (0x44ca28)
        sigpanic: panicmem()
/home/sougou/dev/src/vitess.io/vitess/go/vt/vtgate/vcursor_impl.go:388 (0xb954f8)
        io/vitess/go/vt/vtgate.parseDestinationTarget: if destKeyspace == "" && len(vschema.Keyspaces) == 1 {
/home/sougou/dev/src/vitess.io/vitess/go/vt/vtgate/vcursor_impl.go:135 (0xb934ae)
        io/vitess/go/vt/vtgate.newVCursorImpl: keyspace, tabletType, destination, err := parseDestinationTarget(safeSession.TargetString, vschema)
/home/sougou/dev/src/vitess.io/vitess/go/vt/vtgate/plan_execute.go:98 (0xb85fa9)
        io/vitess/go/vt/vtgate.(*planExecute).execute: vcursor, err := newVCursorImpl(ctx, safeSession, comments, e.e, logStats, e.e.vm, e.e.resolver.resolver)
/home/sougou/dev/src/vitess.io/vitess/go/vt/vtgate/fallback_executor.go:40 (0xb84a34)
        io/vitess/go/vt/vtgate.(*fallbackExecutor).execute: qr, err := f.exA.execute(ctx, safeSession, sql, bindVars, logStats)
/home/sougou/dev/src/vitess.io/vitess/go/vt/vtgate/executor.go:162 (0xb7462c)
        io/vitess/go/vt/vtgate.(*Executor).Execute: result, err = e.exec.execute(ctx, safeSession, sql, bindVars, logStats)
/home/sougou/dev/src/vitess.io/vitess/go/vt/vtgate/vtgate.go:246 (0xb9abf2)
        io/vitess/go/vt/vtgate.(*VTGate).Execute: qr, err = vtg.executor.Execute(ctx, "Execute", NewSafeSession(session), sql, bindVariables)
/home/sougou/dev/src/vitess.io/vitess/go/vt/vtgate/plugin_mysql_server.go:215 (0xb881d4)
        io/vitess/go/vt/vtgate.(*vtgateHandler).ComQuery: session, result, err := vh.vtg.Execute(ctx, session, query, make(map[string]*querypb.BindVariable))
/home/sougou/dev/src/vitess.io/vitess/go/mysql/conn.go:1136 (0x8730d7)
        io/vitess/go/mysql.(*Conn).execQuery: err := handler.ComQuery(c, query, func(qr *sqltypes.Result) error {
/home/sougou/dev/src/vitess.io/vitess/go/mysql/conn.go:819 (0x893382)
        io/vitess/go/mysql.(*Conn).handleNextCommand.func1: if err := c.execQuery(sql, handler, more); err != nil {
/home/sougou/dev/src/vitess.io/vitess/go/mysql/conn.go:827 (0x872e1a)
        io/vitess/go/mysql.(*Conn).handleNextCommand: }()
/home/sougou/dev/src/vitess.io/vitess/go/mysql/server.go:464 (0x88e1d0)
        io/vitess/go/mysql.(*Listener).handle: err := c.handleNextCommand(l.handler)
/usr/local/go/src/runtime/asm_amd64.s:1373 (0x468a80)
@harshit-gangal
Copy link
Member

The issue is non-reproducible on current master.

@askdba askdba added this to the v8.0 milestone Oct 6, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants