[teiid-issues] [JBoss JIRA] (TEIID-4277) Infinispan Cache DSL translator: materialization incomplete results during view's loading

Steven Hawkins (JIRA) issues at jboss.org
Fri Jun 17 10:32:01 EDT 2016


     [ https://issues.jboss.org/browse/TEIID-4277?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Steven Hawkins reassigned TEIID-4277:
-------------------------------------

    Assignee: Van Halbert  (was: Steven Hawkins)


This looks to be specific to JDG as I'm seeing the appropriate behavior on other sources and all of the cardinalities shown in the log for the status update are 10.  

This could be due to not using a transaction to perform the read access and getting some form of weakly consistent results.

[~vhalbert2] can you take a look?

> Infinispan Cache DSL translator: materialization incomplete results during view's loading
> -----------------------------------------------------------------------------------------
>
>                 Key: TEIID-4277
>                 URL: https://issues.jboss.org/browse/TEIID-4277
>             Project: Teiid
>          Issue Type: Bug
>          Components: Misc. Connectors
>    Affects Versions: 8.12.5
>            Reporter: Jan Stastny
>            Assignee: Van Halbert
>            Priority: Blocker
>         Attachments: test.log
>
>
> When user tries to query materialized view in a moment when its loading is in progress, incomplete results are returned. The status of the view in corresponding status table is LOADING.
> Vdb used:
> {code:xml}
> <?xml version="1.0" encoding="UTF-8"?>
> <vdb name="jdg-remote" version="1">
>   <description>For testing of materialized views</description>
>   <property name ="lib" value ="org.jboss.qe.jdg.pojos"></property>
>   <model name="jdgSource">
>     <source name="jdgSource" translator-name="jdg-override"
>       connection-jndi-name="java:/jdg-mat-ds" />
>       <metadata type="DDL"><![CDATA[
>         CREATE FOREIGN TABLE CustomerReport(
>         customerId integer not null OPTIONS (SEARCHABLE 'Searchable', NATIVE_TYPE 'int'),
>         totalAmount integer,
>         CONSTRAINT PK_ID PRIMARY KEY(customerId)
>         ) OPTIONS (NAMEINSOURCE '${db.table.prefix}jdg-mat', UPDATABLE TRUE);]]>
>       </metadata>
>   </model>
>   <model name="h2Source">
>     <source name="h2Source" translator-name="h2" connection-jndi-name="java:/h2-ds" />
>   </model>
>   <model name="View" type="VIRTUAL">
>     <metadata type="DDL"><![CDATA[
>         CREATE VIEW external_long_ttl (
>            customerId integer NOT NULL,
>            totalAmount integer
>         ) OPTIONS (MATERIALIZED 'TRUE',
>             MATERIALIZED_TABLE 'jdgSource.CustomerReport',
>             "teiid_rel:ALLOW_MATVIEW_MANAGEMENT" 'true',
>             "teiid_rel:MATVIEW_LOAD_SCRIPT" 'INSERT INTO jdgSource.CustomerReport(customerId,totalAmount) SELECT c.id AS customerId, CONVERT(SUM(o.amount),integer) AS totalAmount FROM DV_MATVIEWS_CUSTOMERS c INNER JOIN DV_MATVIEWS_ORDERS o ON c.id = o.customer_id GROUP BY c.id;',
>             "teiid_rel:MATVIEW_STATUS_TABLE" 'h2Source.DB.PUBLIC.DV_MATVIEWS_STATUSTABLE',
>             "teiid_rel:MATVIEW_BEFORE_LOAD_SCRIPT" 'execute jdgSource.native(''truncate cache'');',
>             "teiid_rel:MATVIEW_AFTER_LOAD_SCRIPT" 'execute jdgSource.native(''swap cache names'');',
>             "teiid_rel:MATVIEW_ONERROR_ACTION" 'WAIT',
>             "teiid_rel:MATVIEW_TTL" 10000
>         )
>             AS SELECT c.id AS customerId, CONVERT(SUM(o.amount),integer) AS totalAmount FROM DV_MATVIEWS_CUSTOMERS c INNER JOIN DV_MATVIEWS_ORDERS o ON c.id = o.customer_id GROUP BY c.id;
>      ]]>
>     </metadata>
>   </model>
>   <translator name="jdg-override" type="infinispan-cache-dsl">
>     <property name="SupportsDirectQueryProcedure" value="true" />
>   </translator>
> </vdb>
> {code}
> Resource-adapter used:
> {code:xml}
> <resource-adapter id="jdg-mat">
>     <module slot="main" id="org.jboss.teiid.resource-adapter.infinispan.dsl"/>
>     <connection-definitions>
>         <connection-definition class-name="org.teiid.resource.adapter.infinispan.dsl.InfinispanManagedConnectionFactory" jndi-name="java:/jdg-mat-ds" enabled="true" pool-name="jdg-mat">
>             <config-property name="ProtobufDefinitionFile">
>                 /org/jboss/qe/jdg/remote/protobuf/CustomerReport.proto
>             </config-property>
>             <config-property name="AliasCacheName">
>                 ${db.table.prefix}jdg-alias
>             </config-property>
>             <config-property name="MessageMarshallers">
>                 org.jboss.qe.jdg.pojo.CustomerReport:org.jboss.qe.jdg.remote.marshaller.CustomerReportMarshaller
>             </config-property>
>             <config-property name="RemoteServerList">
>                 [remote-server-address]:11322
>             </config-property>
>             <config-property name="StagingCacheName">
>                 ${db.table.prefix}jdg-mat-stage
>             </config-property>
>             <config-property name="CacheTypeMap">
>                 ${db.table.prefix}jdg-mat:org.jboss.qe.jdg.pojo.CustomerReport;customerId
>             </config-property>
>             <config-property name="MessageDescriptor">
>                 org.jboss.qe.jdg.remote.protobuf.CustomerReport
>             </config-property>
>             <config-property name="Module">
>                 org.jboss.qe.jdg.pojos
>             </config-property>
>         </connection-definition>
>     </connection-definitions>
> </resource-adapter>
> {code}
> Datasource used (tables that the view queries):
> {code:xml}
> <xa-datasource jndi-name="java:/h2-ds" pool-name="h2-xa-ds" enabled="true">
>     <xa-datasource-property name="URL">
>         jdbc:h2:tcp://localhost:9292/db;TRACE_LEVEL_FILE=4
>     </xa-datasource-property>
>     <driver>h2</driver>
>     <security>
>         <user-name>sa</user-name>
>     </security>
> </xa-datasource>
> {code}
> Query invoked to check current contents of materialized view:
> {code:sql}
> SELECT COUNT(*) FROM external_long_ttl;
> {code}
> And expected result is the same as count of DV_MATVIEWS_CUSTOMERS table from source h2Source. In my case 10.
> But when I print out the result I get all numbers from 0 to 10 . See attached log output (search for 'check-count:')



--
This message was sent by Atlassian JIRA
(v6.4.11#64026)


More information about the teiid-issues mailing list