Mars Hall created PIO-96:
----------------------------
Summary: Storage corrupted by sharing databases between engines
with different storage configs
Key: PIO-96
URL: https://issues.apache.org/jira/browse/PIO-96
Project: PredictionIO
Issue Type: Bug
Components: Core
Affects Versions: 0.11.0-incubating
Reporter: Mars Hall
When getting started with PredictionIO, it's no problem to spin up an engine
and see it work. Problems emerge when a developer tries running multiple
engines with different storage configs on the same underlying database, such as:
* a Classifier with *Postgres* meta, event, & model storage, and
* the Universal Recommender with *Elasticsearch* meta plus *Postgres* event &
model storage.
The database will become corrupt because the meta tables are stored in
different databases, but the dynamically created event & storage tables may
mistakenly share the same name, like {{pio_event_1}}.
We are directing folks to avoid this problem with the Heroku buildpack by
[isolating each engine's
database|https://github.com/heroku/predictionio-buildpack/blob/master/CUSTOM.md#provision-the-database]
and [optionally running an eventserver per
engine|https://github.com/heroku/predictionio-buildpack/blob/master/CUSTOM.md#user-content-eventserver].
It's still a problem with local development, though.
It would be great if PredictionIO's management of the database schema's would
inherently avoid such conflicts, like by using random/UUIDs for dynamically
created table names, so that they will never conflict.
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)