Am un proiect despre tehnologiile Google App Engine folosind datastore, scris în py38
Pentru dezvoltarea locală, folosesc dev_appserver.py și, de asemenea, un emulator de depozit de date Google (https://cloud.google.com/sdk/gcloud/reference/beta/emulators/datastore/start)
Proiectul a fost în dezvoltare cu succes de mai bine de 3 luni - emulatorul de depozit de date local a funcționat. A funcționat și ieri. Dar astăzi m-am confruntat cu o problemă de eroare în flux când încercam să accesez baza de date. Nu am schimbat nicio setare, așa că trebuia doar să funcționeze și să nu provoace probleme.
Puteți vedea traseul complet mai jos
io.grpc.netty.NettyServerHandler onStreamError
[magazin de date] AVERTISMENT: Eroare de flux
[datastore] io.netty.handler.codec.http2.Http2Exception$StreamException: Fluxul a fost închis înainte ca scrierea să poată avea loc
[magazin de date] la io.netty.handler.codec.http2.Http2Exception.streamError(Http2Exception.java:149)
[magazin de date] la io.netty.handler.codec.http2.DefaultHttp2RemoteFlowController$FlowState.cancel(DefaultHttp2RemoteFlowController.java:480)
[magazin de date] la io.netty.handler.codec.http2.DefaultHttp2RemoteFlowController$1.onStreamClosed(DefaultHttp2RemoteFlowController.java:104)
[magazin de date] la io.netty.handler.codec.http2.DefaultHttp2Connection.notifyClosed(DefaultHttp2Connection.java:356)
[magazin de date] la io.netty.handler.codec.http2.DefaultHttp2Connection$ActiveStreams.removeFromActiveStreams(DefaultHttp2Connection.java:1000)
[magazin de date] la io.netty.handler.codec.http2.DefaultHttp2Connection$ActiveStreams.deactivate(DefaultHttp2Connection.java:956)
[magazin de date] la io.netty.handler.codec.http2.DefaultHttp2Connection$DefaultStream.close(DefaultHttp2Connection.java:512)
[magazin de date] la io.netty.handler.codec.http2.DefaultHttp2Connection$DefaultStream.close(DefaultHttp2Connection.java:518)
[magazin de date] la io.netty.handler.codec.http2.Http2ConnectionHandler.closeStream(Http2ConnectionHandler.java:589)
[magazin de date] la io.netty.handler.codec.http2.DefaultHttp2ConnectionDecoder$FrameReadListener.onRstStreamRead(DefaultHttp2ConnectionDecoder.java:352)
[magazin de date] la io.netty.handler.codec.http2.Http2InboundFrameLogger$1.onRstStreamRead(Http2InboundFrameLogger.java:80)
[magazin de date] la io.netty.handler.codec.http2.DefaultHttp2FrameReader.readRstStreamFrame(DefaultHttp2FrameReader.java:516)
[magazin de date] la io.netty.handler.codec.http2.DefaultHttp2FrameReader.processPayloadState(DefaultHttp2FrameReader.java:260)
[magazin de date] la io.netty.handler.codec.http2.DefaultHttp2FrameReader.readFrame(DefaultHttp2FrameReader.java:160)
[magazin de date] la io.netty.handler.codec.http2.Http2InboundFrameLogger.readFrame(Http2InboundFrameLogger.java:41)
[magazin de date] la io.netty.handler.codec.http2.DefaultHttp2ConnectionDecoder.decodeFrame(DefaultHttp2ConnectionDecoder.java:118)
[magazin de date] la io.netty.handler.codec.http2.Http2ConnectionHandler$FrameDecoder.decode(Http2ConnectionHandler.java:390)
[magazin de date] la io.netty.handler.codec.http2.Http2ConnectionHandler.decode(Http2ConnectionHandler.java:450)
[magazin de date] la io.netty.handler.codec.ByteToMessageDecoder.decodeRemovalReentryProtection(ByteToMessageDecoder.java:502)
[magazin de date] la io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:441)
[magazin de date] la io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:278)
[magazin de date] la io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
[magazin de date] la io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
[magazin de date] la io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340)
[magazin de date] la io.gapi.emulators.netty.HttpVersionRoutingHandler.channelRead(HttpVersionRoutingHandler.java:103)
[magazin de date] la io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
[magazin de date] la io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
[magazin de date] la io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340)
[magazin de date] la io.netty.handler.logging.LoggingHandler.channelRead(LoggingHandler.java:241)
[magazin de date] la io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
[magazin de date] la io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
[magazin de date] la io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340)
[magazin de date] la io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1434)
[magazin de date] la io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
[magazin de date] la io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
[magazin de date] la io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:965)
[magazin de date] la io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:163)
[magazin de date] la io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:656)
[magazin de date] la io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:591)
[magazin de date] la io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:508)
[magazin de date] la io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:470)
[magazin de date] la io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:909)
[magazin de date] la java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
[magazin de date] la java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
[magazin de date] la java.base/java.lang.Thread.run(Thread.java:834)
Emulatorul de depozit de date rulează pe localhost:8081. În aplicația motor de aplicație, variabilele pentru conexiune sunt setate în timpul dezvoltării locale. Aplicația web în sine rulează pe localhost:8080.
După cum am descris mai sus, nu am schimbat nimic - pur și simplu a încetat să funcționeze