Are recommenders required to be thread-safe?

The recommender owns the datamodel and can build data structures upon construction. To have a multi-threaded service anonymous user recommendations, you need a separate PAudm per thread, because you poke the PAudm object with the anonymous user's prefs.

But since the recommender can have state, this has to be true. The recommender is not itself thread-safe, so poking a few values into its datamodel is also not thread-safe.

Sean, in your production system, do you have multi-threaded access to the recommender? Do you have a separate recommender object for each anonymous user recommendation request?

Lance

Lance Norskog wrote:
SlopeOneRecco uses memorydiff. memorydiff walks the data model and
assumes there are prefs for all users. It throws an exception in the
constructor due to this. There are a bunch of implementations that may
not completely work with all other implementations due to assumptions
like this.

Also, does PlusAnon... have a problem where you walk the temporary
prefs and it always gives you the last one? This happens somewhere
that I have to track down. Just wondering if someone knows this one.

On Fri, Sep 17, 2010 at 2:35 AM, Sean Owen<[email protected]>  wrote:
I have used it in a production system. What issues do you see?

On Fri, Sep 17, 2010 at 10:33 AM, Lance Norskog<[email protected]>  wrote:
Does anyone have an example of successfully using
PlusAnonymousUserDataModel? There are no unit tests for it. I'm playing
around and finding one problem after another in various classes; they do
things that don't fit with how PAUDM works.

Lance




Reply via email to