[ 
https://issues.apache.org/jira/browse/OMID-240?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17789386#comment-17789386
 ] 

Rajeshbabu Chintaguntla commented on OMID-240:
----------------------------------------------

In memory modules are mainly for testing purpose. Currently HBaseCommitTable 
instance is getting used in coprocessor to fetch the commit timestamp which 
will be used to skip cells if those are by on going transaction. So configuring 
inmemory modules by default at TSO server is not good. 
{code:java}
    @Override
    public void start(CoprocessorEnvironment env) throws IOException {
        LOG.info("Starting snapshot filter coprocessor");
        this.env = (RegionCoprocessorEnvironment)env;
        commitTableConf = new HBaseCommitTableConfig();
        String commitTableName = 
env.getConfiguration().get(COMMIT_TABLE_NAME_KEY);
        if (commitTableName != null) {
            commitTableConf.setTableName(commitTableName);
        }
        connection = RegionConnectionFactory
                
.getConnection(RegionConnectionFactory.ConnectionType.READ_CONNECTION, 
(RegionCoprocessorEnvironment) env);
        commitTableClient = new HBaseCommitTable(connection, 
commitTableConf).getClient();
        LOG.info("Snapshot filter started");
    }{code}

So would be better to make default commit module at 
default-omid-server-configuration.yml to DefaultHBaseCommitTableStorageModule 
to sync both coprocessor and tso server usage of commit tables.
{noformat}
# Default module configuration (No TSO High Availability & in-memory storage 
for timestamp and commit tables)
timestampStoreModule: !!org.apache.omid.tso.InMemoryTimestampStorageModule [ ]
commitTableStoreModule: !!org.apache.omid.tso.InMemoryCommitTableStorageModule 
[ ]
{noformat}

{noformat}
commitTableStoreModule: 
!!org.apache.omid.committable.hbase.DefaultHBaseCommitTableStorageModule
{noformat}

Timestamp module can still be in memory by default.

> Transactional visibility is broken
> ----------------------------------
>
>                 Key: OMID-240
>                 URL: https://issues.apache.org/jira/browse/OMID-240
>             Project: Phoenix Omid
>          Issue Type: Bug
>    Affects Versions: 1.1.0
>            Reporter: Lars Hofhansl
>            Assignee: Rajeshbabu Chintaguntla
>            Priority: Critical
>         Attachments: hbase-omid-client-config.yml, 
> omid-server-configuration.yml
>
>
> Client I:
> {code:java}
>  > create table test(x float primary key, y float) DISABLE_WAL=true, 
> TRANSACTIONAL=true;
> No rows affected (1.872 seconds)
> > !autocommit off
> Autocommit status: false
> > upsert into test values(rand(), rand());
> 1 row affected (0.018 seconds)
> > upsert into test select rand(), rand() from test;
> -- 18-20x
> > !commit{code}
>  
> Client II:
> {code:java}
> -- repeat quickly after the commit on client I
> > select count(*) from test;
> +----------+
> | COUNT(1) |
> +----------+
> | 0        |
> +----------+
> 1 row selected (1.408 seconds)
> > select count(*) from test;
> +----------+
> | COUNT(1) |
> +----------+
> | 259884   |
> +----------+
> 1 row selected (2.959 seconds)
> > select count(*) from test;
> +----------+
> | COUNT(1) |
> +----------+
> | 260145   |
> +----------+
> 1 row selected (4.274 seconds)
> > select count(*) from test;
> +----------+
> | COUNT(1) |
> +----------+
> | 260148   |
> +----------+
> 1 row selected (5.563 seconds)
> > select count(*) from test;
> +----------+
> | COUNT(1) |
> +----------+
> | 260148   |
> +----------+
> 1 row selected (5.573 seconds){code}
> The second client should either show 0 or 260148. But no other value!



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to