gora-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "ASF GitHub Bot (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (GORA-419) AccumuloStore.put deletes entire row when updating map/array field
Date Sat, 02 May 2015 20:19:06 GMT

    [ 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)

Mime
View raw message