[
https://issues.apache.org/jira/browse/GORA-419?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14525456#comment-14525456
]
ASF GitHub Bot commented on GORA-419:
-------------------------------------
Github user gerhardgossen commented on the pull request:
https://github.com/apache/gora/pull/23#issuecomment-98395390
@renato2099: do you mean the clear-before-put behavior? You probably don't
need to fetch the old map if you're just adding new KVs, because the new KVs
will just add new columns to the map's column family. So if you just update
with the new values, new KVs will be added (as expected), new values for
existing keys will overwrite the old values (as expected) and not mentioned
keys will keep their existing value (which may or may not be what you expect
(but e.g. Nutch seems to expect this)). For this you don't need any read or
delete operations.
Anyway, this is probably outside of the scope of this pull request. The
original bug is that if I update a map or array field, the values of completely
unrelated columns will be deleted from the store (see [test
case](https://github.com/gerhardgossen/gora-419)), which is always unexpected
;).
> AccumuloStore.put deletes entire row when updating map/array field
> ------------------------------------------------------------------
>
> Key: GORA-419
> URL: https://issues.apache.org/jira/browse/GORA-419
> Project: Apache Gora
> Issue Type: Bug
> Components: gora-accumulo
> Affects Versions: 0.5, 0.6
> Environment: Gora 0.5
> Accumulo 1.5.1
> Zookeeper 3.4.6
> Hadoop 1.2.1
> Reporter: Gerhard Gossen
> Priority: Critical
>
> In {{AccumuloStore.put(k, v)}} fields of type MAP or ARRAY are cleared first
> before they are set to the new value. This is done in the methods
> {{putMap}}/{{putArray}} using a call to {{deleteByQuery(q)}}. The name for
> fields to be deleted is taken from the current column. However,
> {{deleteByQuery}} tries to translate the field names of the query to column
> names again, which fails with a log message like
> {code}
> 2015-04-13 13:43:35.084 ERROR 16733 --- [ool-46-thread-1]
> o.a.gora.accumulo.store.AccumuloStore : Mapping not found for field: ol
> 2015-04-13 13:43:35.104 ERROR 16733 --- [ool-46-thread-1]
> o.a.gora.accumulo.store.AccumuloStore : Mapping not found for field: mk
> 2015-04-13 13:43:35.115 ERROR 16733 --- [ool-46-thread-1]
> o.a.gora.accumulo.store.AccumuloStore : Mapping not found for field: mtdt
> {code}
> As a result, the query is not restricted to any field and the *entire row is
> deleted*.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)