zrhoffman opened a new issue #4412: deliveryservices/sslkeys/add with no authType returns Internal Server Error URL: https://github.com/apache/trafficcontrol/issues/4412 <!-- ************ STOP!! ************ If this issue identifies a security vulnerability, DO NOT submit it! Instead, contact the Apache Software Foundation Security Team at [email protected] and follow the guidelines at https://www.apache.org/security/ regarding vulnerability disclosure. --> <!-- - For *SUPPORT QUESTIONS*, use the [Traffic Control slack channels](https://traffic-control-cdn.slack.com) or [Traffic Control mailing lists](http://trafficcontrol.apache.org/mailing_lists/). - Before submitting, please **SEARCH GITHUB** for a similar issue or PR. --> ## I'm submitting a ... <!-- (check all that apply with "[x]") --> <!--- security vulnerability (STOP!! - see above)--> - [x] bug report - [ ] new feature / enhancement request - [ ] improvement request (usability, performance, tech debt, etc.) - [ ] other <!--(Please do not submit support requests here - see above)--> ## Traffic Control components affected ... <!-- (check all that apply with "[x]") --> - [ ] CDN in a Box - [ ] Documentation - [ ] Grove - [ ] Traffic Control Client - [ ] Traffic Monitor - [x] Traffic Ops - [ ] Traffic Ops ORT - [ ] Traffic Portal - [ ] Traffic Router - [ ] Traffic Stats - [ ] Traffic Vault - [ ] unknown ## Current behavior: Traffic Ops panics if `authType` is not set in the POST body to `api/1.4/deliveryservices/sslkeys/add`. <!-- Describe how the bug manifests / how the current features are insufficient. --> ## Expected / new behavior: <!-- Describe what the behavior would be without the bug / how the feature would improve Traffic Control --> Validate `DeliveryServiceSSLKeysReq` and check for `nil` `AuthType` to avoid dereferencing `nil`. Also, `authType` should be set in [the JSON request in `to-add-sslkeys` in `to-access.sh`](https://github.com/apache/trafficcontrol/blob/18fe13ac63/infrastructure/cdn-in-a-box/traffic_ops/to-access.sh#L285-L302) of CDN-in-a-Box. ## Minimal reproduction of the problem with instructions: <!-- If the current behavior is a bug or you can illustrate your feature request better with an example, please provide the *STEPS TO REPRODUCE* and include the applicable TC version. --> 1. Rebuild the CDN-in-a-Box's `trafficops-go` Docker image at commit `18fe13ac63` or later 2. Start CDN-in-a-Box, wait for Traffic Ops to be available, run this Python client for Traffic Ops command (from CDN-in-a-Box startup [in `to-access.sh`](https://github.com/apache/trafficcontrol/blob/18fe13ac63/infrastructure/cdn-in-a-box/traffic_ops/to-access.sh#L305)), and pay attention to the `trafficops` container's logs: ```shell script topost deliveryservices/sslkeys/add '{ "cdn": "CDN-in-a-Box", "certificate": { "crt": "", "csr": "", "key": "" }, "deliveryservice": "demo1", "hostname": "demo2", "key": "demo1", "version": 1 }' ``` ## Anything else: <!-- e.g. stacktraces, related issues, suggestions how to fix --> * <details><summary>Stack trace (click to expand)</summary> ```go panic: (err: runtime error: invalid memory address or nil pointer dereference) stacktrace: goroutine 8381 [running]: github.com/apache/trafficcontrol/lib/go-util.Stacktrace(0x0, 0x0, 0x0) /tmp/go/src/github.com/apache/trafficcontrol/lib/go-util/util.go:32 +0xba github.com/apache/trafficcontrol/traffic_ops/traffic_ops_golang/routing/middleware.WrapPanicRecover.func1.1(0x1302080, 0xc0017c6240, 0xc003b2d000) /tmp/go/src/github.com/apache/trafficcontrol/traffic_ops/traffic_ops_golang/routing/middleware/wrappers.go:137 +0x63 panic(0x10057c0, 0x1a28f30) /usr/local/go/src/runtime/panic.go:513 +0x1e6 github.com/apache/trafficcontrol/lib/go-tc.(*DeliveryServiceAddSSLKeysReq).Validate(0xc002908e40, 0xc003da4a80, 0x0, 0x0) /tmp/go/src/github.com/apache/trafficcontrol/lib/go-tc/deliveryservice_ssl_keys.go:139 +0x1ad github.com/apache/trafficcontrol/traffic_ops/traffic_ops_golang/api.Parse(0x7f0cc42e9350, 0xc002311300, 0xc003da4a80, 0x12fb5a0, 0xc002908e40, 0x0, 0x0) /tmp/go/src/github.com/apache/trafficcontrol/traffic_ops/traffic_ops_golang/api/api.go:373 +0x233 github.com/apache/trafficcontrol/traffic_ops/traffic_ops_golang/deliveryservice.AddSSLKeys(0x1302080, 0xc0017c6240, 0xc003b2d000) /tmp/go/src/github.com/apache/trafficcontrol/traffic_ops/traffic_ops_golang/deliveryservice/keys.go:61 +0x31e github.com/apache/trafficcontrol/traffic_ops/traffic_ops_golang/routing/middleware.AuthBase.GetWrapper.func1.1(0x1302080, 0xc0017c6240, 0xc003b2d000) /tmp/go/src/github.com/apache/trafficcontrol/traffic_ops/traffic_ops_golang/routing/middleware/wrappers.go:94 +0x3fa github.com/apache/trafficcontrol/traffic_ops/traffic_ops_golang/routing/middleware.WrapPanicRecover.func1(0x1302080, 0xc0017c6240, 0xc003b2d000) /tmp/go/src/github.com/apache/trafficcontrol/traffic_ops/traffic_ops_golang/routing/middleware/wrappers.go:141 +0x8d github.com/apache/trafficcontrol/traffic_ops/traffic_ops_golang/routing/middleware.WrapHeaders.func1(0x1304e40, 0xc000f83540, 0xc003b2d000) /tmp/go/src/github.com/apache/trafficcontrol/traffic_ops/traffic_ops_golang/routing/middleware/wrappers.go:121 +0x2c6 net/http.HandlerFunc.ServeHTTP(0xc0004b69e0, 0x1304e40, 0xc000f83540, 0xc003b2d000) /usr/local/go/src/net/http/server.go:1964 +0x44 net/http.(*timeoutHandler).ServeHTTP.func1(0xc002908d20, 0xc002311380, 0xc000f83540, 0xc003b2d000, 0xc0021274a0) /usr/local/go/src/net/http/server.go:3155 +0x88 created by net/http.(*timeoutHandler).ServeHTTP /usr/local/go/src/net/http/server.go:3149 +0x1f8 goroutine 1 [chan receive, 2 minutes]: main.signalReloader(0x1301460, 0x12f6a38, 0xc00034da48) /tmp/go/src/github.com/apache/trafficcontrol/traffic_ops/traffic_ops_golang/traffic_ops_golang.go:313 +0xf7 main.main() /tmp/go/src/github.com/apache/trafficcontrol/traffic_ops/traffic_ops_golang/traffic_ops_golang.go:225 +0x279e goroutine 18 [syscall, 2 minutes]: os/signal.signal_recv(0x0) /usr/local/go/src/runtime/sigqueue.go:139 +0x9c os/signal.loop() /usr/local/go/src/os/signal/signal_unix.go:23 +0x26 created by os/signal.init.0 /usr/local/go/src/os/signal/signal_unix.go:29 +0x41 goroutine 25 [select, 2 minutes]: database/sql.(*DB).connectionOpener(0xc0003ae0c0, 0x1305a40, 0xc000148040) /usr/local/go/src/database/sql/sql.go:1001 +0xe7 created by database/sql.OpenDB /usr/local/go/src/database/sql/sql.go:671 +0x29c goroutine 26 [select, 2 minutes]: database/sql.(*DB).connectionResetter(0xc0003ae0c0, 0x1305a40, 0xc000148040) /usr/local/go/src/database/sql/sql.go:1014 +0x109 created by database/sql.OpenDB /usr/local/go/src/database/sql/sql.go:672 +0x2d2 goroutine 27 [IO wait, 2 minutes]: internal/poll.runtime_pollWait(0x7f0ccb858f00, 0x72, 0xffffffffffffffff) /usr/local/go/src/runtime/netpoll.go:173 +0x5e internal/poll.(*pollDesc).wait(0xc000154098, 0x72, 0xc000540000, 0x0, 0x0) /usr/local/go/src/internal/poll/fd_poll_runtime.go:85 +0x96 internal/poll.(*pollDesc).waitRead(0xc000154098, 0xffffffffffffff00, 0x0, 0x0) /usr/local/go/src/internal/poll/fd_poll_runtime.go:90 +0x45 internal/poll.(*FD).Accept(0xc000154080, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0) /usr/local/go/src/internal/poll/fd_unix.go:384 +0x383 net.(*netFD).accept(0xc000154080, 0x0, 0x0, 0x0) /usr/local/go/src/net/fd_unix.go:238 +0x7d net.(*TCPListener).accept(0xc00014c068, 0x0, 0x0, 0x0) /usr/local/go/src/net/tcpsock_posix.go:139 +0x56 net.(*TCPListener).AcceptTCP(0xc00014c068, 0x0, 0x0, 0x0) /usr/local/go/src/net/tcpsock.go:247 +0x79 net/http.tcpKeepAliveListener.Accept(0xc00014c068, 0x0, 0x0, 0x0, 0x0) /usr/local/go/src/net/http/server.go:3232 +0x53 net/http.(*Server).Serve(0xc00031c000, 0x1305500, 0xc00014c068, 0x0, 0x0) /usr/local/go/src/net/http/server.go:2826 +0x350 net/http.(*Server).ListenAndServe(0xc00031c000, 0x0, 0x0) /usr/local/go/src/net/http/server.go:2764 +0x1ed main.main.func1(0x1a40840) /tmp/go/src/github.com/apache/trafficcontrol/traffic_ops/traffic_ops_golang/traffic_ops_golang.go:157 +0x125 created by main.main /tmp/go/src/github.com/apache/trafficcontrol/traffic_ops/traffic_ops_golang/traffic_ops_golang.go:152 +0x1d83 goroutine 66 [IO wait]: internal/poll.runtime_pollWait(0x7f0ccb858e30, 0x72, 0xffffffffffffffff) /usr/local/go/src/runtime/netpoll.go:173 +0x5e internal/poll.(*pollDesc).wait(0xc000154118, 0x72, 0xc0002d8000, 0x0, 0x0) /usr/local/go/src/internal/poll/fd_poll_runtime.go:85 +0x96 internal/poll.(*pollDesc).waitRead(0xc000154118, 0xffffffffffffff00, 0x0, 0x0) /usr/local/go/src/internal/poll/fd_poll_runtime.go:90 +0x45 internal/poll.(*FD).Accept(0xc000154100, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0) /usr/local/go/src/internal/poll/fd_unix.go:384 +0x383 net.(*netFD).accept(0xc000154100, 0x0, 0x0, 0x0) /usr/local/go/src/net/fd_unix.go:238 +0x7d net.(*TCPListener).accept(0xc00015c090, 0x0, 0x0, 0x0) /usr/local/go/src/net/tcpsock_posix.go:139 +0x56 net.(*TCPListener).AcceptTCP(0xc00015c090, 0x0, 0x0, 0x0) /usr/local/go/src/net/tcpsock.go:247 +0x79 net/http.tcpKeepAliveListener.Accept(0xc00015c090, 0x0, 0x0, 0x0, 0x0) /usr/local/go/src/net/http/server.go:3232 +0x53 crypto/tls.(*listener).Accept(0xc000454540, 0x0, 0x0, 0x0, 0x0) /usr/local/go/src/crypto/tls/tls.go:52 +0x64 net/http.(*Server).Serve(0xc00031c5b0, 0x1302040, 0xc000454540, 0x0, 0x0) /usr/local/go/src/net/http/server.go:2826 +0x350 net/http.(*Server).ServeTLS(0xc00031c5b0, 0x1305500, 0xc00015c090, 0xc0003180f1, 0x1f, 0xc000318115, 0x1f, 0x0, 0x0) /usr/local/go/src/net/http/server.go:2891 +0x377 net/http.(*Server).ListenAndServeTLS(0xc00031c5b0, 0xc0003180f1, 0x1f, 0xc000318115, 0x1f, 0x0, 0x0) /usr/local/go/src/net/http/server.go:3048 +0x269 main.main.func2(0xc000336000, 0xc00031c5b0) /tmp/go/src/github.com/apache/trafficcontrol/traffic_ops/traffic_ops_golang/traffic_ops_golang.go:204 +0x6aa created by main.main /tmp/go/src/github.com/apache/trafficcontrol/traffic_ops/traffic_ops_golang/traffic_ops_golang.go:179 +0x2257 goroutine 64 [IO wait, 1 minutes]: internal/poll.runtime_pollWait(0x7f0ccb858d60, 0x72, 0xb) /usr/local/go/src/runtime/netpoll.go:173 +0x5e internal/poll.(*pollDesc).wait(0xc0002ba598, 0x72, 0x12fd800, 0x0, 0x0) /usr/local/go/src/internal/poll/fd_poll_runtime.go:85 +0x96 internal/poll.(*pollDesc).waitRead(0xc0002ba598, 0xc00339a000, 0x0, 0x0) /usr/local/go/src/internal/poll/fd_poll_runtime.go:90 +0x45 internal/poll.(*FD).Read(0xc0002ba580, 0xc00339a000, 0x2000, 0x2000, 0x0, 0x0, 0x0) /usr/local/go/src/internal/poll/fd_unix.go:169 +0x36a net.(*netFD).Read(0xc0002ba580, 0xc00339a000, 0x2000, 0x2000, 0x0, 0x0, 0x0) /usr/local/go/src/net/fd_unix.go:202 +0x7a net.(*conn).Read(0xc00014cc70, 0xc00339a000, 0x2000, 0x2000, 0x0, 0x0, 0x0) /usr/local/go/src/net/net.go:177 +0xb0 crypto/tls.(*block).readFromUntil(0xc000405bf0, 0x12fc6e0, 0xc00014cc70, 0x5, 0x0, 0x0) /usr/local/go/src/crypto/tls/conn.go:492 +0x171 crypto/tls.(*Conn).readRecord(0xc001138000, 0x1158a17, 0x0, 0x0) /usr/local/go/src/crypto/tls/conn.go:593 +0x1b1 crypto/tls.(*Conn).Read(0xc001138000, 0xc000e78000, 0x1000, 0x1000, 0x0, 0x0, 0x0) /usr/local/go/src/crypto/tls/conn.go:1145 +0x16c net/http.(*connReader).Read(0xc0003e0e70, 0xc000e78000, 0x1000, 0x1000, 0x0, 0x0, 0x0) /usr/local/go/src/net/http/server.go:786 +0x2ce bufio.(*Reader).fill(0xc000141980) /usr/local/go/src/bufio/bufio.go:100 +0x2dc bufio.(*Reader).Peek(0xc000141980, 0x4, 0x0, 0x0, 0x0, 0x0, 0x0) /usr/local/go/src/bufio/bufio.go:132 +0x12d net/http.(*conn).serve(0xc000ce3040, 0x1305a40, 0xc000bee280) /usr/local/go/src/net/http/server.go:1872 +0x135b created by net/http.(*Server).Serve /usr/local/go/src/net/http/server.go:2851 +0x7b0 goroutine 104 [select, 2 minutes]: database/sql.(*DB).connectionCleaner(0xc0003ae0c0, 0x4e94914f0000) /usr/local/go/src/database/sql/sql.go:899 +0x136 created by database/sql.(*DB).startCleanerLocked /usr/local/go/src/database/sql/sql.go:886 +0xe5 goroutine 8399 [select]: net/http.(*timeoutHandler).ServeHTTP(0xc002311380, 0x13020c0, 0xc000974ea0, 0xc003b2d000) /usr/local/go/src/net/http/server.go:3158 +0x2f8 github.com/apache/trafficcontrol/traffic_ops/traffic_ops_golang/routing/middleware.TimeOutWrapper.func1.1(0x13020c0, 0xc000974ea0, 0xc003b2cf00) /tmp/go/src/github.com/apache/trafficcontrol/traffic_ops/traffic_ops_golang/routing/middleware/wrappers.go:104 +0xb2 net/http.HandlerFunc.ServeHTTP(0xc0004b8d40, 0x13020c0, 0xc000974ea0, 0xc003b2cf00) /usr/local/go/src/net/http/server.go:1964 +0x44 github.com/apache/trafficcontrol/traffic_ops/traffic_ops_golang/routing/middleware.WrapAccessLog.func1(0x1304e00, 0xc002ed4620, 0xc003b2cf00) /tmp/go/src/github.com/apache/trafficcontrol/traffic_ops/traffic_ops_golang/routing/middleware/wrappers.go:172 +0x276 github.com/apache/trafficcontrol/traffic_ops/traffic_ops_golang/routing.Handler(0xc0004c7350, 0xc0004c7320, 0x12fd120, 0xc00015e0c0, 0xc0000b3680, 0xc000336480, 0xc000479ef0, 0x1305040, 0xc000158450, 0x1304e00, ...) /tmp/go/src/github.com/apache/trafficcontrol/traffic_ops/traffic_ops_golang/routing/routing.go:286 +0xd03 github.com/apache/trafficcontrol/traffic_ops/traffic_ops_golang/routing.RegisterRoutes.func1(0x1304e00, 0xc002ed4620, 0xc003b2cd00) /tmp/go/src/github.com/apache/trafficcontrol/traffic_ops/traffic_ops_golang/routing/routing.go:351 +0x12c net/http.HandlerFunc.ServeHTTP(0xc000eb7a80, 0x1304e00, 0xc002ed4620, 0xc003b2cd00) /usr/local/go/src/net/http/server.go:1964 +0x44 net/http.(*ServeMux).ServeHTTP(0xc0001584b0, 0x1304e00, 0xc002ed4620, 0xc003b2cd00) /usr/local/go/src/net/http/server.go:2361 +0x1a4 net/http.serverHandler.ServeHTTP(0xc00031c5b0, 0x1304e00, 0xc002ed4620, 0xc003b2cd00) /usr/local/go/src/net/http/server.go:2741 +0x1e9 net/http.(*conn).serve(0xc000eebd60, 0x1305a40, 0xc002311280) /usr/local/go/src/net/http/server.go:1847 +0x1146 created by net/http.(*Server).Serve /usr/local/go/src/net/http/server.go:2851 +0x7b0 goroutine 6870 [IO wait]: internal/poll.runtime_pollWait(0x7f0ccb858a20, 0x72, 0xb) /usr/local/go/src/runtime/netpoll.go:173 +0x5e internal/poll.(*pollDesc).wait(0xc0002dd198, 0x72, 0x12fd800, 0x0, 0x0) /usr/local/go/src/internal/poll/fd_poll_runtime.go:85 +0x96 internal/poll.(*pollDesc).waitRead(0xc0002dd198, 0xc0038a2000, 0x0, 0x0) /usr/local/go/src/internal/poll/fd_poll_runtime.go:90 +0x45 internal/poll.(*FD).Read(0xc0002dd180, 0xc0038a2000, 0x2000, 0x2000, 0x0, 0x0, 0x0) /usr/local/go/src/internal/poll/fd_unix.go:169 +0x36a net.(*netFD).Read(0xc0002dd180, 0xc0038a2000, 0x2000, 0x2000, 0x0, 0x0, 0x0) /usr/local/go/src/net/fd_unix.go:202 +0x7a net.(*conn).Read(0xc0002d50e8, 0xc0038a2000, 0x2000, 0x2000, 0x0, 0x0, 0x0) /usr/local/go/src/net/net.go:177 +0xb0 crypto/tls.(*block).readFromUntil(0xc0004840f0, 0x12fc6e0, 0xc0002d50e8, 0x5, 0x0, 0x0) /usr/local/go/src/crypto/tls/conn.go:492 +0x171 crypto/tls.(*Conn).readRecord(0xc0029e2a80, 0x1158a17, 0x0, 0x0) /usr/local/go/src/crypto/tls/conn.go:593 +0x1b1 crypto/tls.(*Conn).Read(0xc0029e2a80, 0xc0024bd000, 0x1000, 0x1000, 0x0, 0x0, 0x0) /usr/local/go/src/crypto/tls/conn.go:1145 +0x16c net/http.(*persistConn).Read(0xc002903680, 0xc0024bd000, 0x1000, 0x1000, 0x0, 0x0, 0x0) /usr/local/go/src/net/http/transport.go:1499 +0x24d bufio.(*Reader).fill(0xc000045b00) /usr/local/go/src/bufio/bufio.go:100 +0x2dc bufio.(*Reader).Peek(0xc000045b00, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0) /usr/local/go/src/bufio/bufio.go:132 +0x12d net/http.(*persistConn).readLoop(0xc002903680) /usr/local/go/src/net/http/transport.go:1647 +0x1f0 created by net/http.(*Transport).dialConn /usr/local/go/src/net/http/transport.go:1340 +0x13d5 goroutine 6871 [select]: net/http.(*persistConn).writeLoop(0xc002903680) /usr/local/go/src/net/http/transport.go:1887 +0x14e created by net/http.(*Transport).dialConn /usr/local/go/src/net/http/transport.go:1341 +0x13fa goroutine 6892 [select]: github.com/apache/trafficcontrol/traffic_ops/vendor/github.com/basho/riak-go-client.(*connectionManager).manageConnections(0xc00031cea0) /tmp/go/src/github.com/apache/trafficcontrol/traffic_ops/vendor/github.com/basho/riak-go-client/connection_manager.go:335 +0x16f created by github.com/apache/trafficcontrol/traffic_ops/vendor/github.com/basho/riak-go-client.(*connectionManager).start /tmp/go/src/github.com/apache/trafficcontrol/traffic_ops/vendor/github.com/basho/riak-go-client/connection_manager.go:190 +0x29f goroutine 8383 [runnable]: github.com/apache/trafficcontrol/vendor/github.com/lib/pq.(*conn).watchCancel.func1(0xc00046f0e0, 0xc0014aa840, 0xc002127620) /tmp/go/src/github.com/apache/trafficcontrol/vendor/github.com/lib/pq/conn_go18.go:83 +0xad created by github.com/apache/trafficcontrol/vendor/github.com/lib/pq.(*conn).watchCancel /tmp/go/src/github.com/apache/trafficcontrol/vendor/github.com/lib/pq/conn_go18.go:82 +0xa8 goroutine 8385 [IO wait]: internal/poll.runtime_pollWait(0x7f0ccb8587b0, 0x72, 0xb) /usr/local/go/src/runtime/netpoll.go:173 +0x5e internal/poll.(*pollDesc).wait(0xc003d99918, 0x72, 0x12fd800, 0x0, 0x0) /usr/local/go/src/internal/poll/fd_poll_runtime.go:85 +0x96 internal/poll.(*pollDesc).waitRead(0xc003d99918, 0xc0035c5800, 0x0, 0x0) /usr/local/go/src/internal/poll/fd_poll_runtime.go:90 +0x45 internal/poll.(*FD).Read(0xc003d99900, 0xc0035c5800, 0x400, 0x400, 0x0, 0x0, 0x0) /usr/local/go/src/internal/poll/fd_unix.go:169 +0x36a net.(*netFD).Read(0xc003d99900, 0xc0035c5800, 0x400, 0x400, 0x0, 0x0, 0x0) /usr/local/go/src/net/fd_unix.go:202 +0x7a net.(*conn).Read(0xc00015d260, 0xc0035c5800, 0x400, 0x400, 0x0, 0x0, 0x0) /usr/local/go/src/net/net.go:177 +0xb0 crypto/tls.(*block).readFromUntil(0xc002ba68d0, 0x12fc6e0, 0xc00015d260, 0x5, 0x0, 0x0) /usr/local/go/src/crypto/tls/conn.go:492 +0x171 crypto/tls.(*Conn).readRecord(0xc003633500, 0x1158a17, 0x0, 0x0) /usr/local/go/src/crypto/tls/conn.go:593 +0x1b1 crypto/tls.(*Conn).Read(0xc003633500, 0xc002135f91, 0x1, 0x1, 0x0, 0x0, 0x0) /usr/local/go/src/crypto/tls/conn.go:1145 +0x16c net/http.(*connReader).backgroundRead(0xc002135f80) /usr/local/go/src/net/http/server.go:676 +0xb6 created by net/http.(*connReader).startBackgroundRead /usr/local/go/src/net/http/server.go:672 +0x102 goroutine 8384 [runnable]: database/sql.(*Tx).awaitDone(0xc003da4a80) /usr/local/go/src/database/sql/sql.go:1916 +0x54 created by database/sql.(*DB).beginDC /usr/local/go/src/database/sql/sql.go:1672 +0x34e ``` </details> * This breaks CDN-in-a-Box. <!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. -->
---------------------------------------------------------------- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: [email protected] With regards, Apache Git Services
