Unifi upgrade 2.4.6 to 3.2.10: exception: remove needs a query at src/mongo/shell/collection.js
July 8, 2015
If you try to upgrade Ubiquiti Networks Unifi system from version 2.4.6 to 3.2.10 it is possible that you’ll run into following problem:
Exception in thread "launcher" org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'class.super': Instantiation of bean failed; nested exception is org.springframework.beans.factory.BeanDefinitionStoreException: Factory method [public final com.ubnt.A.new.B com.ubnt.A.new$$EnhancerByCGLIB$$ad7756e2.class.super()] threw exception; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'Ø00000': Invocation of init method failed; nested exception is com.mongodb.CommandResult$CommandFailure: command failed [$eval]: { "serverUsed" : "/127.0.0.1:27117" , "errmsg" : "exception: remove needs a query at src/mongo/shell/collection.js:299" , "code" : 16722 , "ok" : 0.0}
when trying to start it like this
/usr/bin/java -jar /opt/UniFi/lib/ace.jar start
Searching through the Internet shows that more people have the problem but a working solution is not posted anywhere. So here is it:
The reason for the problem is quit easily found here. Basically the syntax of the command is not correct. So I started to search through the lib directory for a file that contains this incorrect string. It is within /opt/UniFi/lib/ace.jar
so I installed the jar command line utility (on Centos 6)
yum install java-1.7.0-openjdk-devel
and extracted all files to search in which it was. As I found it, its easier for you just type:
jar xf ace.jar com/ubnt/A/ooOO/OOoO.class
Now you need a Java class editor – we use this Java one. Download and extract it and start it like this:
java -jar ce.jar
Now you need to find and change the values:
- Click on “Constant Pool”
- Type
db.cache_device.remove
in the search field and find the line 459 - Activate the “Modify Mode” and change the values
In the end it should look like this (the second one is a link to the fist, just update):
Now save the file and update the jar file:
jar uf ace.jar com/ubnt/A/ooOO/OOoO.class
Now a restart and migration should work. Hope this helps others .. it took me one hour to find my solution, so I hope its now faster for you. 😉
2 Comments »
RSS feed for comments on this post. TrackBack URI
Leave a comment
Powered by WordPress
Entries and comments feeds.
Valid XHTML and CSS.
42 queries. 0.049 seconds.
OMG!!!
You ROCK – nice wrote up – NO ONE has put this together in such a coherent way.
I will be linking to this from the unifi forums.
Comment by robotech — August 18, 2015 #
Hi,
thanks a lot for publishing this.
here’s my contribution. The 3.2.10 ace.jar already modified. Just copy over your existing one and you’re good to go.
https://dl.dropboxusercontent.com/u/10864071/ace.jar
Comment by Tiago de Aviz — January 21, 2017 #