[
https://issues.jboss.org/browse/TEIID-5056?page=com.atlassian.jira.plugin...
]
Ramesh Reddy commented on TEIID-5056:
-------------------------------------
One more simple question [~jstastny] and [~van.halbert]. If this was a relational database
like Postgres, you defined the DDL in the source model and added some data with it then
you changed the DDL on the model (name, type whatever) do you still expect Teiid to
change the schema in the Postgres database and clear the database contents as result?
We are still targeting this as "external" materialization, yes developer needs
to have that knowledge that any schema changes in-flight would be not compatible. If this
was internal materialization this needs to handled differently. DDL or .proto both are
metadata, saying that when a developer modifies the .proto he/she knows to flush the cache
Vs when they edited DDL they don't know is not the right argument IMO. What we have
provided is flexible and consistent way to define the metadata.
Yes, this a view versioning issue, to properly maintain multiple caches for each version
we would need "remote cache" create/delete functionality in the Infinispan, then
we can also have version number injected in the .proto registration. This is entirely a
new feature.
Infinispan Hotrod error on DDL metadata change
----------------------------------------------
Key: TEIID-5056
URL:
https://issues.jboss.org/browse/TEIID-5056
Project: Teiid
Issue Type: Bug
Components: JDG Connector, Misc. Connectors
Affects Versions: 8.12.x-6.4
Reporter: Jan Stastny
Assignee: Ramesh Reddy
Priority: Blocker
When user has DDL metadata similar to:
{code:xml|title=Source model}
<model name="Source" type="PHYSICAL"
visible="true">
<source name="jdg7-source"
translator-name="infinispan-hotrod"
connection-jndi-name="java:/jdg71HotrodDS" />
<metadata type="DDL"><![CDATA[
CREATE FOREIGN TABLE SmallA (
StringKey string PRIMARY KEY,
IntKey integer
) OPTIONS(UPDATABLE true, "teiid_ispn:cache"
'cache_name');
]]>
</metadata>
<metadata type = "NATIVE"/>
</model>
{code}
and for example renames a column to:
{code:xml|title=Source with renamed column}
<model name="Source" type="PHYSICAL"
visible="true">
<source name="jdg7-source"
translator-name="infinispan-hotrod"
connection-jndi-name="java:/jdg71HotrodDS" />
<metadata type="DDL"><![CDATA[
CREATE FOREIGN TABLE SmallA (
StringKey string PRIMARY KEY,
Renamed integer
) OPTIONS(UPDATABLE true, "teiid_ispn:cache"
'cache_name');
]]>
</metadata>
<metadata type = "NATIVE"/>
</model>
{code}
Then after redeploy the VDB becomes active:
{code:title=server.log}
14:14:51,555 INFO [org.teiid.RUNTIME.VDBLifeCycleListener] (MSC service thread 1-8)
TEIID40118 VDB jdg71_crud.1 added to the repository
14:14:51,556 INFO [org.teiid.RUNTIME] (MSC service thread 1-8) TEIID50029 VDB
jdg71_crud.1 model "Source" metadata is currently being loaded. Start Time:
9/8/17 2:14 PM
14:14:51,560 INFO [org.teiid.RUNTIME] (teiid-async-threads - 2) TEIID50030 VDB
jdg71_crud.1 model "Source" metadata loaded. End Time: 9/8/17 2:14 PM
14:14:51,561 INFO [org.teiid.RUNTIME.VDBLifeCycleListener] (teiid-async-threads - 2)
TEIID40003 VDB jdg71_crud.1 is set to ACTIVE
{code}
But on query:
{code:sql}
SELECT * FROM SMallA;
{code}
Following error occurs:
{code:title=error message}
TEIID30504 Remote org.teiid.core.TeiidProcessingException: TEIID30504 jdg7-source:
org.infinispan.objectfilter.ParsingException: ISPN028501: The type Source.SmallA has no
property named 'Renamed'.
{code}
{code:title=server.log}
14:16:13,265 WARN [org.infinispan.client.hotrod.impl.protocol.Codec21]
(Worker3_QueryProcessorQueue72) ISPN004005: Error received from the server:
org.infinispan.objectfilter.ParsingException: ISPN028501: The type Source.SmallA has no
property named 'Renamed'.
14:16:13,267 ERROR [org.teiid.CONNECTOR] (Worker3_QueryProcessorQueue72) Connector worker
process failed for atomic-request=dwocyRSbrDcO.0.0.18:
org.infinispan.client.hotrod.exceptions.HotRodClientException:Request for messageId=70
returned server error (status=0x85): org.infinispan.objectfilter.ParsingException:
ISPN028501: The type Source.SmallA has no property named 'Renamed'.
at
org.infinispan.client.hotrod.impl.protocol.Codec20.checkForErrorsInResponseStatus(Codec20.java:363)
[infinispan-client-hotrod-8.4.0.Final-redhat-2.jar:8.4.0.Final-redhat-2]
at
org.infinispan.client.hotrod.impl.protocol.Codec20.readPartialHeader(Codec20.java:152)
[infinispan-client-hotrod-8.4.0.Final-redhat-2.jar:8.4.0.Final-redhat-2]
at org.infinispan.client.hotrod.impl.protocol.Codec20.readHeader(Codec20.java:138)
[infinispan-client-hotrod-8.4.0.Final-redhat-2.jar:8.4.0.Final-redhat-2]
at
org.infinispan.client.hotrod.impl.operations.HotRodOperation.readHeaderAndValidate(HotRodOperation.java:60)
[infinispan-client-hotrod-8.4.0.Final-redhat-2.jar:8.4.0.Final-redhat-2]
at
org.infinispan.client.hotrod.impl.operations.QueryOperation.executeOperation(QueryOperation.java:68)
[infinispan-client-hotrod-8.4.0.Final-redhat-2.jar:8.4.0.Final-redhat-2]
at
org.infinispan.client.hotrod.impl.operations.QueryOperation.executeOperation(QueryOperation.java:30)
[infinispan-client-hotrod-8.4.0.Final-redhat-2.jar:8.4.0.Final-redhat-2]
at
org.infinispan.client.hotrod.impl.operations.RetryOnFailureOperation.execute(RetryOnFailureOperation.java:56)
[infinispan-client-hotrod-8.4.0.Final-redhat-2.jar:8.4.0.Final-redhat-2]
at org.infinispan.client.hotrod.impl.query.RemoteQuery.executeQuery(RemoteQuery.java:68)
[infinispan-client-hotrod-8.4.0.Final-redhat-2.jar:8.4.0.Final-redhat-2]
at org.infinispan.client.hotrod.impl.query.RemoteQuery.list(RemoteQuery.java:53)
[infinispan-client-hotrod-8.4.0.Final-redhat-2.jar:8.4.0.Final-redhat-2]
at
org.teiid.translator.infinispan.hotrod.InfinispanResponse.fetchNextBatch(InfinispanResponse.java:74)
[translator-infinispan-hotrod-8.12.11.6_4-redhat-6.jar:8.12.11.6_4-redhat-6]
at
org.teiid.translator.infinispan.hotrod.InfinispanResponse.getNextRow(InfinispanResponse.java:90)
[translator-infinispan-hotrod-8.12.11.6_4-redhat-6.jar:8.12.11.6_4-redhat-6]
at
org.teiid.translator.infinispan.hotrod.InfinispanQueryExecution.next(InfinispanQueryExecution.java:136)
[translator-infinispan-hotrod-8.12.11.6_4-redhat-6.jar:8.12.11.6_4-redhat-6]
at
org.teiid.dqp.internal.datamgr.ConnectorWorkItem.handleBatch(ConnectorWorkItem.java:433)
[teiid-engine-8.12.11.6_4-redhat-64-6.jar:8.12.11.6_4-redhat-64-6]
at org.teiid.dqp.internal.datamgr.ConnectorWorkItem.more(ConnectorWorkItem.java:236)
[teiid-engine-8.12.11.6_4-redhat-64-6.jar:8.12.11.6_4-redhat-64-6]
at sun.reflect.GeneratedMethodAccessor168.invoke(Unknown Source) [:1.8.0_121]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[rt.jar:1.8.0_121]
at java.lang.reflect.Method.invoke(Method.java:498) [rt.jar:1.8.0_121]
at org.teiid.dqp.internal.datamgr.ConnectorManager$1.invoke(ConnectorManager.java:211)
[teiid-engine-8.12.11.6_4-redhat-64-6.jar:8.12.11.6_4-redhat-64-6]
at com.sun.proxy.$Proxy79.more(Unknown Source)
at
org.teiid.dqp.internal.process.DataTierTupleSource.getResults(DataTierTupleSource.java:309)
[teiid-engine-8.12.11.6_4-redhat-64-6.jar:8.12.11.6_4-redhat-64-6]
at
org.teiid.dqp.internal.process.DataTierTupleSource$1.call(DataTierTupleSource.java:112)
[teiid-engine-8.12.11.6_4-redhat-64-6.jar:8.12.11.6_4-redhat-64-6]
at
org.teiid.dqp.internal.process.DataTierTupleSource$1.call(DataTierTupleSource.java:108)
[teiid-engine-8.12.11.6_4-redhat-64-6.jar:8.12.11.6_4-redhat-64-6]
at java.util.concurrent.FutureTask.run(FutureTask.java:266) [rt.jar:1.8.0_121]
at org.teiid.dqp.internal.process.FutureWork.run(FutureWork.java:65)
[teiid-engine-8.12.11.6_4-redhat-64-6.jar:8.12.11.6_4-redhat-64-6]
at org.teiid.dqp.internal.process.DQPWorkContext.runInContext(DQPWorkContext.java:280)
[teiid-engine-8.12.11.6_4-redhat-64-6.jar:8.12.11.6_4-redhat-64-6]
at
org.teiid.dqp.internal.process.ThreadReuseExecutor$RunnableWrapper.run(ThreadReuseExecutor.java:119)
[teiid-engine-8.12.11.6_4-redhat-64-6.jar:8.12.11.6_4-redhat-64-6]
at
org.teiid.dqp.internal.process.ThreadReuseExecutor$3.run(ThreadReuseExecutor.java:210)
[teiid-engine-8.12.11.6_4-redhat-64-6.jar:8.12.11.6_4-redhat-64-6]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
[rt.jar:1.8.0_121]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
[rt.jar:1.8.0_121]
at java.lang.Thread.run(Thread.java:745) [rt.jar:1.8.0_121]
14:16:13,275 WARN [org.teiid.PROCESSOR] (Worker2_QueryProcessorQueue73) TEIID30020
Processing exception for request dwocyRSbrDcO.0 'TEIID30504 jdg7-source:
org.infinispan.objectfilter.ParsingException: ISPN028501: The type Source.SmallA has no
property named 'Renamed'.'. Originally TeiidProcessingException
Codec20.java:363. Enable more detailed logging to see the entire stacktrace.
{code}
The only way to solve this is to restart JDG instance. Restarting Teiid server is not
enough.
--
This message was sent by Atlassian JIRA
(v7.2.3#72005)