graphaware / neo4j-reco

Neo4j-based recommendation engine module with real-time and pre-computed recommendations.
374 stars 77 forks source link

Random recommendations bug #1

Closed dimitrkovalsky closed 9 years ago

dimitrkovalsky commented 9 years ago

Hello I use your lib as recommendation engine and I found some bug connected with random recommendations. I use embedded server and in example from github doc I have got this error:

Exception in thread "main" java.lang.NullPointerException at com.graphaware.runtime.walk.RandomNodeSelector.randomNodeO1(RandomNodeSelector.java:80) at com.graphaware.runtime.walk.RandomNodeSelector.selectNode(RandomNodeSelector.java:64) at com.graphaware.reco.neo4j.engine.RandomRecommendations.doRecommendSingle(RandomRecommendations.java:67) at com.graphaware.reco.neo4j.engine.RandomRecommendations.doRecommendSingle(RandomRecommendations.java:34) at com.graphaware.reco.generic.engine.SingleScoreRecommendationEngine.doRecommend(SingleScoreRecommendationEngine.java:61) at com.graphaware.reco.generic.engine.BaseRecommendationEngine.recommend(BaseRecommendationEngine.java:55) at com.graphaware.reco.generic.engine.DelegatingRecommendationEngine.doRecommend(DelegatingRecommendationEngine.java:129) at com.graphaware.reco.generic.engine.TopLevelDelegatingRecommendationEngine.doRecommend(TopLevelDelegatingRecommendationEngine.java:76) at com.graphaware.reco.generic.engine.BaseRecommendationEngine.recommend(BaseRecommendationEngine.java:55) at com.graphaware.reco.generic.engine.DelegatingRecommendationEngine.doRecommend(DelegatingRecommendationEngine.java:129) at com.graphaware.reco.generic.engine.TopLevelDelegatingRecommendationEngine.doRecommend(TopLevelDelegatingRecommendationEngine.java:76) at com.graphaware.reco.generic.engine.BaseRecommendationEngine.recommend(BaseRecommendationEngine.java:55) at com.graphaware.reco.generic.engine.TopLevelDelegatingRecommendationEngine.recommend(TopLevelDelegatingRecommendationEngine.java:60) at com.liberty.Main.main(Main.java:26) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at com.intellij.rt.execution.application.AppMain.main(AppMain.java:134)

This happens in com.graphaware.runtime.walk.RandomNodeSelector line 80 (randomNodeO1 method) : long highestId = ((GraphDatabaseAPI) database).getDependencyResolver().resolveDependency(NodeManager.class).getHighestPossibleIdInUse(Node.class);

resolveDependency returns null and after that application fails. May be these happens because GraphDatabaseAPI is deprecated and does not work with Neo4j 2.1.7? I think this is a bug and this report will be helpful. Here is full project https://github.com/dimitrkovalsky/neo. I run it from Main. Thanks, Dmytro

bachmanm commented 9 years ago

That's because you're using Neo4j 2.1.5 in your app. You need to use Neo4j 2.1.7 with this version of the framework and the recommendation library.