Question

I'm trying to deploy the MaxMind geoIP database as part of a Java app deployed in Google AppEngine. Things worked okay when we were using the free version, but upon upgrading to the paid-for (and larger) database, trying to deploy gives the error:

File /tmp/appcfg4412552511405829763.tmp/WEB-INF/GeoIPCity.dat is too large (limit 32000000 bytes)

As far as I can tell, I have jar splitting enabled, but that doesn't help because this isn't a jar (renaming it to .jar doesn't magically fix it either :). Is there any way to get a file this large (~48mb) deployed as part of an AppEngine app?

My fallback plan is to shove the file in Cloud Storage and grab it from there. Unfortunately, Maxmind's Java code really really wants a File - not a Stream, not a Reader, not a byte[], but a File - which is hard to come by in AppEngine. Before I end up re-writing a bunch of stuff, I figured I'd see if anyone had managed to solve this problem already.

Was it helpful?

Solution

On GAE the max application file size is 32Mb.

AFAIK you can not work around that. It would be best if you could split that in smaller files.

OTHER TIPS

Why use a 3rd party geoip database file fór this information when you get geo point, country, region and city for free in the appengine request headers?

My advice is to use x-appengine-geopoint, -country, -region and -city headers respectively for this purpose.

This should work, but requires you to catch thor headers at request level and store in the datastore along with other user data.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top