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