2012-03-30 12 views
0

Setup Wiedergabe 1.2.4 mit Morphia 1.2.6a und MongoDB auf MongoLab (nicht über Add-on)Erste ungültig Mongo ObjectId auf Heroku aber nicht lokal

UPDATE Blick nach unten der Frage zur Erläuterung.

Laufen auf meiner lokalen Box in Prod und spielen Seiten ohne Fehler. Auf Heroku geschoben und die Datenbank wirft nach unten. Anders als bei Datenbanktransaktionen funktioniert das Spielen gut.

2012-03-30T23:17:57+00:00 app[web.1]: Caused by: java.lang.RuntimeException: java.lang.IllegalArgumentException: invalid ObjectId [4] 
2012-03-30T23:17:57+00:00 app[web.1]: at com.google.code.morphia.mapping.ValueMapper.fromDBObject(ValueMapper.java:27) 
2012-03-30T23:17:57+00:00 app[web.1]: at com.google.code.morphia.mapping.Mapper.readMappedField(Mapper.java:501) 
2012-03-30T23:17:57+00:00 app[web.1]: at com.google.code.morphia.mapping.Mapper.fromDb(Mapper.java:484) 
2012-03-30T23:17:57+00:00 app[web.1]: ... 18 more 
2012-03-30T23:17:57+00:00 app[web.1]: Caused by: java.lang.IllegalArgumentException: invalid ObjectId [4] 
2012-03-30T23:17:57+00:00 app[web.1]: at org.bson.types.ObjectId.<init>(ObjectId.java:128) 
2012-03-30T23:17:57+00:00 app[web.1]: at org.bson.types.ObjectId.<init>(ObjectId.java:122) 
2012-03-30T23:17:57+00:00 app[web.1]: at com.google.code.morphia.mapping.ValueMapper.fromDBObject(ValueMapper.java:25) 
2012-03-30T23:17:57+00:00 app[web.1]: ... 20 more 
2012-03-30T23:17:57+00:00 app[web.1]: at com.google.code.morphia.converters.ObjectIdConverter.decode(ObjectIdConverter.java:28) 
2012-03-30T23:17:57+00:00 app[web.1]: at com.google.code.morphia.converters.DefaultConverters.fromDBObject(DefaultConverters.java:129) 

ich für meine Id Lange bin mit, ob das etwas damit zu tun hat, Config morphia.id.type = Lange

An diesem Punkt zu spielen, ich bin fest. Jede Hilfe, sehr geschätzt.

Application.conf # Datenbanknamen konfigurieren. Standardwert: Test

%prod.morphia.db.name=asdf 
%prod.morphia.db.seeds=ds032747.mongolab.com:32747 
%[email protected] 
%prod.morphia.db.password=bla 
%prod.morphia.id.type=Long 

Hier ist der Web-App-Stack von Heroku:

2012-03-31T13:14:57+00:00 app[web.1]: java.lang.RuntimeException: java.lang.RuntimeException: java.lang.IllegalArgumentException: invalid ObjectId [4] 
2012-03-31T13:14:57+00:00 app[web.1]: at com.google.code.morphia.mapping.Mapper.fromDb(Mapper.java:487) 
2012-03-31T13:14:57+00:00 app[web.1]: at com.google.code.morphia.mapping.Mapper.fromDBObject(Mapper.java:267) 
2012-03-31T13:14:57+00:00 app[web.1]: at com.google.code.morphia.query.MorphiaIterator.convertItem(MorphiaIterator.java:66) 
2012-03-31T13:14:57+00:00 app[web.1]: at com.google.code.morphia.query.MorphiaIterator.processItem(MorphiaIterator.java:53) 
2012-03-31T13:14:57+00:00 app[web.1]: at com.google.code.morphia.query.MorphiaIterator.next(MorphiaIterator.java:48) 
2012-03-31T13:14:57+00:00 app[web.1]: at com.google.code.morphia.query.QueryImpl.get(QueryImpl.java:365) 
2012-03-31T13:14:57+00:00 app[web.1]: at play.modules.morphia.Model$MorphiaQuery.get(Model.java:1302) 
2012-03-31T13:14:57+00:00 app[web.1]: at play.modules.morphia.Model$MorphiaQuery.first(Model.java:1237) 
2012-03-31T13:14:57+00:00 app[web.1]: at controllers.DataUserService.find(DataUserService.java:30) 
2012-03-31T13:14:57+00:00 app[web.1]: at securesocial.provider.UserService.find(UserService.java:96) 
2012-03-31T13:14:57+00:00 app[web.1]: at securesocial.provider.providers.UsernamePasswordProvider.doAuth(UsernamePasswordProvider.java:71) 
2012-03-31T13:14:57+00:00 app[web.1]: at securesocial.provider.IdentityProvider.authenticate(IdentityProvider.java:67) 
2012-03-31T13:14:57+00:00 app[web.1]: at controllers.securesocial.SecureSocial.authenticate(SecureSocial.java:198) 
2012-03-31T13:14:57+00:00 app[web.1]: at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
2012-03-31T13:14:57+00:00 app[web.1]: at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
2012-03-31T13:14:57+00:00 app[web.1]: at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
2012-03-31T13:14:57+00:00 app[web.1]: at play.mvc.ActionInvoker.invokeWithContinuation(ActionInvoker.java:548) 
2012-03-31T13:14:57+00:00 app[web.1]: at java.lang.reflect.Method.invoke(Method.java:616) 
2012-03-31T13:14:57+00:00 app[web.1]: at play.mvc.ActionInvoker.invoke(ActionInvoker.java:502) 
2012-03-31T13:14:57+00:00 app[web.1]: at play.mvc.ActionInvoker.invokeControllerMethod(ActionInvoker.java:478) 
2012-03-31T13:14:57+00:00 app[web.1]: at play.mvc.ActionInvoker.invokeControllerMethod(ActionInvoker.java:473) 
2012-03-31T13:14:57+00:00 app[web.1]: at play.mvc.ActionInvoker.invoke(ActionInvoker.java:161) 
2012-03-31T13:14:57+00:00 app[web.1]: at play.server.PlayHandler$NettyInvocation.execute(PlayHandler.java:257) 
2012-03-31T13:14:57+00:00 app[web.1]: at play.Invoker$Invocation.run(Invoker.java:278) 
2012-03-31T13:14:57+00:00 app[web.1]: at play.server.PlayHandler$NettyInvocation.run(PlayHandler.java:235) 
2012-03-31T13:14:57+00:00 app[web.1]: at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) 
2012-03-31T13:14:57+00:00 app[web.1]: at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334) 
2012-03-31T13:14:57+00:00 app[web.1]: at java.util.concurrent.FutureTask.run(FutureTask.java:166) 
2012-03-31T13:14:57+00:00 app[web.1]: at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$101(ScheduledThreadPoolExecutor.java:165) 
2012-03-31T13:14:57+00:00 app[web.1]: at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:266) 
2012-03-31T13:14:57+00:00 app[web.1]: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) 
2012-03-31T13:14:57+00:00 app[web.1]: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) 
2012-03-31T13:14:57+00:00 app[web.1]: at java.lang.Thread.run(Thread.java:636) 
2012-03-31T13:14:57+00:00 app[web.1]: Caused by: java.lang.RuntimeException: java.lang.IllegalArgumentException: invalid ObjectId [4] 
2012-03-31T13:14:57+00:00 app[web.1]: at com.google.code.morphia.mapping.ValueMapper.fromDBObject(ValueMapper.java:27) 
2012-03-31T13:14:57+00:00 app[web.1]: at com.google.code.morphia.mapping.Mapper.readMappedField(Mapper.java:501) 
2012-03-31T13:14:57+00:00 app[web.1]: ... 32 more 
2012-03-31T13:14:57+00:00 app[web.1]: at com.google.code.morphia.mapping.Mapper.fromDb(Mapper.java:484) 
2012-03-31T13:14:57+00:00 app[web.1]: at org.bson.types.ObjectId.<init>(ObjectId.java:128) 
2012-03-31T13:14:57+00:00 app[web.1]: Caused by: java.lang.IllegalArgumentException: invalid ObjectId [4] 
2012-03-31T13:14:57+00:00 app[web.1]: at com.google.code.morphia.converters.ObjectIdConverter.decode(ObjectIdConverter.java:28) 
2012-03-31T13:14:57+00:00 app[web.1]: at com.google.code.morphia.converters.DefaultConverters.fromDBObject(DefaultConverters.java:129) 
2012-03-31T13:14:57+00:00 app[web.1]: at org.bson.types.ObjectId.<init>(ObjectId.java:122) 
2012-03-31T13:14:57+00:00 app[web.1]: at com.google.code.morphia.mapping.ValueMapper.fromDBObject(ValueMapper.java:25) 
2012-03-31T13:14:57+00:00 app[web.1]: ... 34 more 
2012-03-31T13:14:57+00:00 app[web.1]: at com.google.code.morphia.mapping.Mapper.fromDBObject(Mapper.java:267) 
2012-03-31T13:14:57+00:00 app[web.1]: 13:14:57,854 ERROR ~ Error authenticating user 
2012-03-31T13:14:57+00:00 app[web.1]: at com.google.code.morphia.query.MorphiaIterator.convertItem(MorphiaIterator.java:66) 
2012-03-31T13:14:57+00:00 app[web.1]: java.lang.RuntimeException: java.lang.RuntimeException: java.lang.IllegalArgumentException: invalid ObjectId [4] 
2012-03-31T13:14:57+00:00 app[web.1]: at com.google.code.morphia.mapping.Mapper.fromDb(Mapper.java:487) 
2012-0 
3-31T13:14:57+00:00 app[web.1]:  at com.google.code.morphia.query.MorphiaIterator.next(MorphiaIterator.java:48) 
2012-03-31T13:14:57+00:00 app[web.1]: at com.google.code.morphia.query.MorphiaIterator.processItem(MorphiaIterator.java:53) 
2012-03-31T13:14:57+00:00 app[web.1]: at com.google.code.morphia.query.QueryImpl.get(QueryImpl.java:365) 
2012-03-31T13:14:57+00:00 app[web.1]: at play.modules.morphia.Model$MorphiaQuery.get(Model.java:1302) 
2012-03-31T13:14:57+00:00 app[web.1]: at securesocial.provider.UserService.find(UserService.java:96) 
2012-03-31T13:14:57+00:00 app[web.1]: at play.modules.morphia.Model$MorphiaQuery.first(Model.java:1237) 
2012-03-31T13:14:57+00:00 app[web.1]: at controllers.DataUserService.find(DataUserService.java:30) 
2012-03-31T13:14:57+00:00 app[web.1]: at securesocial.provider.providers.UsernamePasswordProvider.doAuth(UsernamePasswordProvider.java:71) 
2012-03-31T13:14:57+00:00 app[web.1]: at securesocial.provider.IdentityProvider.authenticate(IdentityProvider.java:67) 
2012-03-31T13:14:57+00:00 app[web.1]: at controllers.securesocial.SecureSocial.authenticate(SecureSocial.java:198) 
2012-03-31T13:14:57+00:00 app[web.1]: at play.mvc.ActionInvoker.invokeWithContinuation(ActionInvoker.java:548) 
2012-03-31T13:14:57+00:00 app[web.1]: at play.mvc.ActionInvoker.invoke(ActionInvoker.java:502) 
2012-03-31T13:14:57+00:00 app[web.1]: at play.mvc.ActionInvoker.invokeControllerMethod(ActionInvoker.java:478) 
2012-03-31T13:14:57+00:00 app[web.1]: at play.mvc.ActionInvoker.invoke(ActionInvoker.java:161) 
2012-03-31T13:14:57+00:00 app[web.1]: at Invocation.HTTP Request(Play!) 
2012-03-31T13:14:57+00:00 app[web.1]: at play.mvc.ActionInvoker.invokeControllerMethod(ActionInvoker.java:473) 
2012-03-31T13:14:57+00:00 app[web.1]: Caused by: java.lang.RuntimeException: java.lang.IllegalArgumentException: invalid ObjectId [4] 
2012-03-31T13:14:57+00:00 app[web.1]: at com.google.code.morphia.mapping.ValueMapper.fromDBObject(ValueMapper.java:27) 
2012-03-31T13:14:57+00:00 app[web.1]: at com.google.code.morphia.mapping.Mapper.readMappedField(Mapper.java:501) 
2012-03-31T13:14:57+00:00 app[web.1]: at com.google.code.morphia.mapping.Mapper.fromDb(Mapper.java:484) 
2012-03-31T13:14:57+00:00 app[web.1]: ... 18 more 
2012-03-31T13:14:57+00:00 app[web.1]: Caused by: java.lang.IllegalArgumentException: invalid ObjectId [4] 
2012-03-31T13:14:57+00:00 app[web.1]: at org.bson.types.ObjectId.<init>(ObjectId.java:128) 
2012-03-31T13:14:57+00:00 app[web.1]: at org.bson.types.ObjectId.<init>(ObjectId.java:122) 
2012-03-31T13:14:57+00:00 app[web.1]: at com.google.code.morphia.converters.ObjectIdConverter.decode(ObjectIdConverter.java:28) 
2012-03-31T13:14:57+00:00 app[web.1]: at com.google.code.morphia.converters.DefaultConverters.fromDBObject(DefaultConverters.java:129) 
2012-03-31T13:14:57+00:00 app[web.1]: at com.google.code.morphia.mapping.ValueMapper.fromDBObject(ValueMapper.java:25) 
2012-03-31T13:14:57+00:00 app[web.1]: ... 20 more 

Seltsam, dass es läuft (Play Lauf -% prod) auf meiner Box den gleichen mongolab db verwenden, aber nicht auf Heroku. Heroku-Protokolle sind auf die zweite gerundet - nicht viel Hilfe. Ich frage mich, ob Heroku mit benutzerdefinierten Treiber überschreiben? Heroku hat ein "Add-on" -Angebot von MongoLab und ich vermute, dass das etwas damit zu tun hat, aber das ist ein Stich im Dunkeln.

Ich werde einen Test mit Heroku Mongolab Add-on versuchen und sehen, ob das funktioniert. Es ist ein Schmerz, da ich bereits eine db habe, aber einen Versuch wert - denke ich.

Heruntergezogen ein Klon von Heroku und lief Play-Deps - Sync, lief ohne Fehler lokal.

Sieht verdächtig wie this issue mit Anwendungsversionen (auf Knoten). Ich hoffe, das ist keine wilde Jagd.

Fest. Das ist der Deal. Heroku mag keine Framework-IDs. Ich habe mindestens drei separate Framework-IDs für lokale Tests und zwei verschiedene db-Provider eingerichtet. Einer von ihnen wurde auf meinen Prod (% prod.) Eingestellt. Heroku mag diese nicht. Beseitigen Sie alle Präfix-Framework-IDs auf Config (ich musste alle anderen db's auskommentieren) und bang, funktioniert wie ein Zauber. Ich denke, dass Heroku an ihrem Config-Parser arbeiten muss.

Es ist die Framework-ID-Einstellung in Eclipse. Ich habe festgestellt, dass nach dem Wiederaufbau meiner Entwicklungsumgebung dieses Problem wieder aufgetaucht ist. Ich habe festgestellt, dass das Ausführen von Play von der Befehlszeile mit dem enthaltenen Framework-Argument zu keinen Fehlern geführt hat. Habe etwas mehr recherchiert und festgestellt, dass der Play eclipsify-Befehl die Build-Konfigurationen überschreibt (meine IDE ist Eclipse). Die neu generierten Konfigurationen "VM-Argumente" enthalten keinen Framework-ID-Wert "-Dplay.id =" (es ist leer). Ich habe diesen Wert in "-Dplay.id = dev" für meinen Dev-Launcher geändert und Play verarbeitet die Konfiguration korrekt. Heroku übergibt die Framework-ID -% prod standardmäßig in PLAY_OPTS, so dass nun beide Umgebungen wie erwartet funktionieren.

Ich aktualisiere diese Frage wegen anderer, die möglicherweise ein ähnliches Problem haben. Ich fand auch diesen Kommentar, der dies verstärkt https://stackoverflow.com/a/9211118/1193291

+0

können Sie relevante Teile Ihrer application.conf posten? –

+0

Ich habe gerade mit der Morphia Conf-Sektion aktualisiert. Die "ungültige ObjectId [4]" aus der Stack-Ablaufverfolgung ist die Long Id für den Datensatz, nach dem ich gesucht habe. Irgendwelche Gedanken, warum Heroku nicht identisch ist. Mein Local trifft genau die gleiche db auf Mongolab ohne Fehler. – zenoexo

+1

sieht gut aus. Haben Sie andere schlechte Signale in Ihrer Protokolldatei bemerkt? –

Antwort

0

Es ist die Framework-ID-Einstellung in Eclipse. Gefunden, dass nach dem Wiederaufbau meiner Entwicklungs-Box, dieses Problem wieder aufgetaucht. Ich habe festgestellt, dass das Ausführen von Play von der Befehlszeile mit dem enthaltenen Framework-Argument zu keinen Fehlern geführt hat. Habe etwas mehr recherchiert und festgestellt, dass der Play eclipsify-Befehl die Build-Konfigurationen überschreibt (meine IDE ist Eclipse). Die neu generierten Konfigurationen "VM-Argumente" enthalten keinen Framework-ID-Wert "-Dplay.id =" (es ist leer). Ich habe diesen Wert in "-Dplay.id = dev" für meinen Dev-Launcher geändert und Play verarbeitet die Konfiguration korrekt. Heroku übergibt die Framework-ID -% prod standardmäßig in PLAY_OPTS, so dass nun beide Umgebungen wie erwartet funktionieren.

Ich aktualisiere diese Frage wegen anderer, die möglicherweise ein ähnliches Problem haben. Ich habe auch diesen Kommentar gefunden, der diese https://stackoverflow.com/a/9211118/1193291

0

verstärkt Ich nehme an, dass dies für Play-Version 1 ist. Ich habe dies lokal erlebt. Wenn jemand anderes dies bekommt, wird es dies beheben:

Dann starten Sie das Spiel neu.

Verwandte Themen