Firestore Errors

Most of my apps are using Google’s Datastore, but I decided to try out the new Firestore on a test application. I’m receiving quite a few of the below errors:

io.grpc.internal.ManagedChannelOrphanWrapper$ManagedChannelReference cleanQueue: *~*~*~ Channel ManagedChannelImpl{logId=346, target=firestore.googleapis.com:443} was not shutdown properly!!! ~*~*~* (ManagedChannelOrphanWrapper.java:151)
    Make sure to call shutdown()/shutdownNow() and wait until awaitTermination() returns true.
java.lang.RuntimeException: ManagedChannel allocation site
	at io.grpc.internal.ManagedChannelOrphanWrapper$ManagedChannelReference.<init>(ManagedChannelOrphanWrapper.java:94)
	at io.grpc.internal.ManagedChannelOrphanWrapper.<init>(ManagedChannelOrphanWrapper.java:52)
	at io.grpc.internal.ManagedChannelOrphanWrapper.<init>(ManagedChannelOrphanWrapper.java:43)
	at io.grpc.internal.AbstractManagedChannelImplBuilder.build(AbstractManagedChannelImplBuilder.java:514)
	at com.google.api.gax.grpc.InstantiatingGrpcChannelProvider.createSingleChannel(InstantiatingGrpcChannelProvider.java:223)
	at com.google.api.gax.grpc.InstantiatingGrpcChannelProvider.createChannel(InstantiatingGrpcChannelProvider.java:164)
	at com.google.api.gax.grpc.InstantiatingGrpcChannelProvider.getTransportChannel(InstantiatingGrpcChannelProvider.java:156)
	at com.google.api.gax.rpc.ClientContext.create(ClientContext.java:157)
	at com.google.api.gax.rpc.ClientContext.create(ClientContext.java:122)
	at com.google.cloud.firestore.spi.v1.GrpcFirestoreRpc.<init>(GrpcFirestoreRpc.java:122)
	at com.google.cloud.firestore.FirestoreOptions$DefaultFirestoreRpcFactory.create(FirestoreOptions.java:80)
	at com.google.cloud.firestore.FirestoreOptions$DefaultFirestoreRpcFactory.create(FirestoreOptions.java:72)
	at com.google.cloud.ServiceOptions.getRpc(ServiceOptions.java:510)
	at com.google.cloud.firestore.FirestoreOptions.getFirestoreRpc(FirestoreOptions.java:315)
	at com.google.cloud.firestore.FirestoreImpl.<init>(FirestoreImpl.java:77)
	at com.google.cloud.firestore.FirestoreOptions$DefaultFirestoreFactory.create(FirestoreOptions.java:63)
	at com.google.cloud.firestore.FirestoreOptions$DefaultFirestoreFactory.create(FirestoreOptions.java:56)
	at com.google.cloud.ServiceOptions.getService(ServiceOptions.java:498)
Screenshot of Firestore exception - failure to shut down in code.

These errors stopped when I called close() on the com.google.cloud.firestore.Firestore object after I was done with storage operations:

Javadoc for close() on com.google.cloud.firestore.Firestore.

I can’t help but feel a little disappointed at this new requirement to close the Firestore connection. It feels like a regression from the Datastore – there was no need to close the datastore object after usage.

WordPress Annoyances

I haven’t been posting as much as I want to lately – I’ve been fiddling with some WordPress issues and a lot of work from my day job.

Here’s some minor thoughts that don’t deserve a post by themselves:

Routing

{
  "code":"rest_no_route",
  "message":"No route was found matching the URL and request method",
  "data": {"status":404}
}

I wrote a custom WP plugin which accepts requests from an App Engine application and returns some custom data. Unfortunately, my app on GAE was returning the above error whenever it tried to make a HTTP request to the WordPress app.

Long story short, the register_rest_route() on my plugin only declared a GET endpoint, and my GAE application was trying to use POST. Make sure you’re using the same HTTP type if you get this error.

WPEngine Firewalls

By default, WPEngine has a firewall that blocks GAE-originated requests from hitting WP plugins – fortunately, if you need GAE to WPEngine-hosted WP communications, you can email WPEngine through their contact form to remove the firewall on a per-blog basis.

Copyright Scandal On YouTube Gaming

A minor scandal popped up this morning and has been making the rounds of YouTube’s gaming section. YouTube user Mumbo Jumbo, famous for his Minecraft videos, suddenly had hundreds of his videos claimed by Warner Chappell – in other words, Warner Chappell claimed that the videos used music they owned, and by claiming the videos, they earned a percentage of the profit the videos generated.

Mumbo Jumbo announced his issue on Twitter this morning:
https://twitter.com/ThatMumboJumbo/status/1130009515766755328 .

Screenshot of Mumbo Jumbo's original tweet asking for help from YouTube.

Twitter user Fwiz, the head of YouTube Gaming, replied that he was looking into it:
https://twitter.com/Fwiz/status/1130128085347516417 .

Screenshot of Fwiz's tweet acknowledging they were looking into Mumbo Jumbo's copyright claim issues.

A lot of news media outlets are picking this story up such as HN: https://news.ycombinator.com/item?id=19953532 and I expect we’ll see a lot more news when business opens on Monday.

Georgios Papanikolaou Doodle

Today’s doodle celebrates the life of Georgios Papanikolaou, who invented the pap smear.

The Google home page looked like this with the doodle:

Here is the doodle by itself:

The doodle links to a search for his name:

Google I/O 2019 Announcement Recap

In case you missed the recent Google I/O convention, Google has a recap of their I/O announcements conveniently summarized here:
https://www.blog.google/technology/developers/100-things-we-announced-io-19/ .

I really like the new privacy features Google is rolling out, but IMO the best one is number 77 on Google’s list: All Chromebooks launched this year will be Linux-ready right out of the box. The Chromebook is great, but sometimes you need the power of a CLI.

Business Insider: Downloading Google Maps For Offline Use

This recent Business Insider article details how to download Google Maps information to your phone’s local storage, so you can use Maps even when offline or when your phone is unable to get a signal: https://www.businessinsider.com/how-to-use-google-maps-offline .

When I travel, I always have Google Maps save a map of the area I’m travelling to. It’s not always possible to have a working cell signal – in flat Illinois where I live, it’s easy to have cell signal all the time. When I travel to more mountainous regions such as Colorado, I often lose signal due to mountains and hills between me and the signal tower.