You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@ignite.apache.org by wt <wa...@gmail.com> on 2018/10/31 18:28:20 UTC

destroy cache holding residual metadata in memory (2.7)

i am testing code and part of my tests is adding\removing tables. In one of
the tests i add a table then destroy it and add it again but with an
additional column. When i try load the table i am getting a data type
mismatch and it is referring to the previous version of the table

in the work directory there is a folder for the original table but it is
empty. here is the error i get when trying to flush the loader. If i stop
and start ignite then adding the table with the new column data type works
so there is some residual metadata that isn't being cleaned up by
destroycache of the client.

Apache.Ignite.Core.Binary.BinaryObjectException
  HResult=0x80131500
  Message=Binary type has different field types
[typeName=Tables.csvCurrencyRates, fieldName=id, fieldTypeName1=UUID,
fieldTypeName2=String]
  Source=Apache.Ignite.Core
  StackTrace:
   at Apache.Ignite.Core.Impl.PlatformJniTarget.InStreamOutLong(Int32 type,
Action`1 writeAction)
   at Apache.Ignite.Core.Impl.PlatformTargetAdapter.DoOutOp(Int32 type,
Action`1 action)
   at Apache.Ignite.Core.Impl.Binary.Marshaller.FinishMarshal(BinaryWriter
writer)
   at Apache.Ignite.Core.Impl.PlatformJniTarget.InStreamOutLong(Int32 type,
Action`1 writeAction)
   at Apache.Ignite.Core.Impl.PlatformTargetAdapter.DoOutOp(Int32 type,
Action`1 action)
   at Apache.Ignite.Core.Impl.Datastream.DataStreamerImpl`2.Update(Action`1
action)
   at
Apache.Ignite.Core.Impl.Datastream.DataStreamerBatch`2.Send(DataStreamerImpl`2
ldr, Int32 plc)
   at
Apache.Ignite.Core.Impl.Datastream.DataStreamerImpl`2.Flush0(DataStreamerBatch`2
curBatch, Boolean wait, Int32 plc)
   at Apache.Ignite.Core.Impl.Datastream.DataStreamerImpl`2.Flush()
   at ClusterTool.classes.DbProviderCSV.StreamCsvData(List`1 headers, String
tablename, ICsvLine[] lines, Object _class, Type type, IIgnite igniteclient,
Boolean hashashid, CsvNewId csvid) in
C:\temp\IgniteTool\ClusterTool\classes\DbProviderCSV.cs:line 236
   at ClusterTool.classes.DbProviderCSV.LoadFromCsvFiles(String tablename)
in C:\temp\IgniteTool\ClusterTool\classes\DbProviderCSV.cs:line 104
   at ClusterTool.DataLoaderForm.<>c__DisplayClass7_0.<Startcsv>b__0() in
C:\temp\IgniteTool\ClusterTool\DataLoaderForm.cs:line 94
   at System.Threading.ExecutionContext.RunInternal(ExecutionContext
executionContext, ContextCallback callback, Object state, Boolean
preserveSyncCtx)
   at System.Threading.ExecutionContext.Run(ExecutionContext
executionContext, ContextCallback callback, Object state, Boolean
preserveSyncCtx)
   at System.Threading.ExecutionContext.Run(ExecutionContext
executionContext, ContextCallback callback, Object state)
   at System.Threading.ThreadHelper.ThreadStart()

Inner Exception 1:
JavaException: class org.apache.ignite.binary.BinaryObjectException: Binary
type has different field types [typeName=Tables.csvCurrencyRates,
fieldName=id, fieldTypeName1=UUID, fieldTypeName2=String]
	at
org.apache.ignite.internal.binary.BinaryUtils.mergeMetadata(BinaryUtils.java:1047)
	at
org.apache.ignite.internal.processors.cache.binary.CacheObjectBinaryProcessorImpl.addMeta(CacheObjectBinaryProcessorImpl.java:480)
	at
org.apache.ignite.internal.processors.cache.binary.CacheObjectBinaryProcessorImpl$2.addMeta(CacheObjectBinaryProcessorImpl.java:207)
	at
org.apache.ignite.internal.binary.BinaryContext.updateMetadata(BinaryContext.java:1332)
	at
org.apache.ignite.internal.processors.platform.PlatformContextImpl.processMetadata(PlatformContextImpl.java:336)
	at
org.apache.ignite.internal.processors.platform.binary.PlatformBinaryProcessor.processInStreamOutLong(PlatformBinaryProcessor.java:70)
	at
org.apache.ignite.internal.processors.platform.PlatformAbstractTarget.processInStreamOutLong(PlatformAbstractTarget.java:87)
	at
org.apache.ignite.internal.processors.platform.PlatformTargetProxyImpl.inStreamOutLong(PlatformTargetProxyImpl.java:67)





--
Sent from: http://apache-ignite-users.70518.x6.nabble.com/

Re: destroy cache holding residual metadata in memory (2.7)

Posted by Yakov Zhdanov <yz...@apache.org>.
Wayne, can you please share a reproducer for this problem that can be
launched from IDE?

--Yakov

Re: destroy cache holding residual metadata in memory (2.7)

Posted by Yakov Zhdanov <yz...@apache.org>.
Wayne, can you please share a reproducer for this problem that can be
launched from IDE?

--Yakov

Re: destroy cache holding residual metadata in memory (2.7)

Posted by Denis Magda <dm...@apache.org>.
+ dev list

Vladimir, Igniters,

Don't we wipe out the metadata on a cache destroy? Is it an issue or done
on purpose?

--
Denis


On Wed, Oct 31, 2018 at 11:28 AM wt <wa...@gmail.com> wrote:

> i am testing code and part of my tests is adding\removing tables. In one of
> the tests i add a table then destroy it and add it again but with an
> additional column. When i try load the table i am getting a data type
> mismatch and it is referring to the previous version of the table
>
> in the work directory there is a folder for the original table but it is
> empty. here is the error i get when trying to flush the loader. If i stop
> and start ignite then adding the table with the new column data type works
> so there is some residual metadata that isn't being cleaned up by
> destroycache of the client.
>
> Apache.Ignite.Core.Binary.BinaryObjectException
>   HResult=0x80131500
>   Message=Binary type has different field types
> [typeName=Tables.csvCurrencyRates, fieldName=id, fieldTypeName1=UUID,
> fieldTypeName2=String]
>   Source=Apache.Ignite.Core
>   StackTrace:
>    at Apache.Ignite.Core.Impl.PlatformJniTarget.InStreamOutLong(Int32 type,
> Action`1 writeAction)
>    at Apache.Ignite.Core.Impl.PlatformTargetAdapter.DoOutOp(Int32 type,
> Action`1 action)
>    at Apache.Ignite.Core.Impl.Binary.Marshaller.FinishMarshal(BinaryWriter
> writer)
>    at Apache.Ignite.Core.Impl.PlatformJniTarget.InStreamOutLong(Int32 type,
> Action`1 writeAction)
>    at Apache.Ignite.Core.Impl.PlatformTargetAdapter.DoOutOp(Int32 type,
> Action`1 action)
>    at Apache.Ignite.Core.Impl.Datastream.DataStreamerImpl`2.Update(Action`1
> action)
>    at
>
> Apache.Ignite.Core.Impl.Datastream.DataStreamerBatch`2.Send(DataStreamerImpl`2
> ldr, Int32 plc)
>    at
>
> Apache.Ignite.Core.Impl.Datastream.DataStreamerImpl`2.Flush0(DataStreamerBatch`2
> curBatch, Boolean wait, Int32 plc)
>    at Apache.Ignite.Core.Impl.Datastream.DataStreamerImpl`2.Flush()
>    at ClusterTool.classes.DbProviderCSV.StreamCsvData(List`1 headers,
> String
> tablename, ICsvLine[] lines, Object _class, Type type, IIgnite
> igniteclient,
> Boolean hashashid, CsvNewId csvid) in
> C:\temp\IgniteTool\ClusterTool\classes\DbProviderCSV.cs:line 236
>    at ClusterTool.classes.DbProviderCSV.LoadFromCsvFiles(String tablename)
> in C:\temp\IgniteTool\ClusterTool\classes\DbProviderCSV.cs:line 104
>    at ClusterTool.DataLoaderForm.<>c__DisplayClass7_0.<Startcsv>b__0() in
> C:\temp\IgniteTool\ClusterTool\DataLoaderForm.cs:line 94
>    at System.Threading.ExecutionContext.RunInternal(ExecutionContext
> executionContext, ContextCallback callback, Object state, Boolean
> preserveSyncCtx)
>    at System.Threading.ExecutionContext.Run(ExecutionContext
> executionContext, ContextCallback callback, Object state, Boolean
> preserveSyncCtx)
>    at System.Threading.ExecutionContext.Run(ExecutionContext
> executionContext, ContextCallback callback, Object state)
>    at System.Threading.ThreadHelper.ThreadStart()
>
> Inner Exception 1:
> JavaException: class org.apache.ignite.binary.BinaryObjectException: Binary
> type has different field types [typeName=Tables.csvCurrencyRates,
> fieldName=id, fieldTypeName1=UUID, fieldTypeName2=String]
>         at
>
> org.apache.ignite.internal.binary.BinaryUtils.mergeMetadata(BinaryUtils.java:1047)
>         at
>
> org.apache.ignite.internal.processors.cache.binary.CacheObjectBinaryProcessorImpl.addMeta(CacheObjectBinaryProcessorImpl.java:480)
>         at
>
> org.apache.ignite.internal.processors.cache.binary.CacheObjectBinaryProcessorImpl$2.addMeta(CacheObjectBinaryProcessorImpl.java:207)
>         at
>
> org.apache.ignite.internal.binary.BinaryContext.updateMetadata(BinaryContext.java:1332)
>         at
>
> org.apache.ignite.internal.processors.platform.PlatformContextImpl.processMetadata(PlatformContextImpl.java:336)
>         at
>
> org.apache.ignite.internal.processors.platform.binary.PlatformBinaryProcessor.processInStreamOutLong(PlatformBinaryProcessor.java:70)
>         at
>
> org.apache.ignite.internal.processors.platform.PlatformAbstractTarget.processInStreamOutLong(PlatformAbstractTarget.java:87)
>         at
>
> org.apache.ignite.internal.processors.platform.PlatformTargetProxyImpl.inStreamOutLong(PlatformTargetProxyImpl.java:67)
>
>
>
>
>
> --
> Sent from: http://apache-ignite-users.70518.x6.nabble.com/
>

Re: destroy cache holding residual metadata in memory (2.7)

Posted by Denis Magda <dm...@apache.org>.
+ dev list

Vladimir, Igniters,

Don't we wipe out the metadata on a cache destroy? Is it an issue or done
on purpose?

--
Denis


On Wed, Oct 31, 2018 at 11:28 AM wt <wa...@gmail.com> wrote:

> i am testing code and part of my tests is adding\removing tables. In one of
> the tests i add a table then destroy it and add it again but with an
> additional column. When i try load the table i am getting a data type
> mismatch and it is referring to the previous version of the table
>
> in the work directory there is a folder for the original table but it is
> empty. here is the error i get when trying to flush the loader. If i stop
> and start ignite then adding the table with the new column data type works
> so there is some residual metadata that isn't being cleaned up by
> destroycache of the client.
>
> Apache.Ignite.Core.Binary.BinaryObjectException
>   HResult=0x80131500
>   Message=Binary type has different field types
> [typeName=Tables.csvCurrencyRates, fieldName=id, fieldTypeName1=UUID,
> fieldTypeName2=String]
>   Source=Apache.Ignite.Core
>   StackTrace:
>    at Apache.Ignite.Core.Impl.PlatformJniTarget.InStreamOutLong(Int32 type,
> Action`1 writeAction)
>    at Apache.Ignite.Core.Impl.PlatformTargetAdapter.DoOutOp(Int32 type,
> Action`1 action)
>    at Apache.Ignite.Core.Impl.Binary.Marshaller.FinishMarshal(BinaryWriter
> writer)
>    at Apache.Ignite.Core.Impl.PlatformJniTarget.InStreamOutLong(Int32 type,
> Action`1 writeAction)
>    at Apache.Ignite.Core.Impl.PlatformTargetAdapter.DoOutOp(Int32 type,
> Action`1 action)
>    at Apache.Ignite.Core.Impl.Datastream.DataStreamerImpl`2.Update(Action`1
> action)
>    at
>
> Apache.Ignite.Core.Impl.Datastream.DataStreamerBatch`2.Send(DataStreamerImpl`2
> ldr, Int32 plc)
>    at
>
> Apache.Ignite.Core.Impl.Datastream.DataStreamerImpl`2.Flush0(DataStreamerBatch`2
> curBatch, Boolean wait, Int32 plc)
>    at Apache.Ignite.Core.Impl.Datastream.DataStreamerImpl`2.Flush()
>    at ClusterTool.classes.DbProviderCSV.StreamCsvData(List`1 headers,
> String
> tablename, ICsvLine[] lines, Object _class, Type type, IIgnite
> igniteclient,
> Boolean hashashid, CsvNewId csvid) in
> C:\temp\IgniteTool\ClusterTool\classes\DbProviderCSV.cs:line 236
>    at ClusterTool.classes.DbProviderCSV.LoadFromCsvFiles(String tablename)
> in C:\temp\IgniteTool\ClusterTool\classes\DbProviderCSV.cs:line 104
>    at ClusterTool.DataLoaderForm.<>c__DisplayClass7_0.<Startcsv>b__0() in
> C:\temp\IgniteTool\ClusterTool\DataLoaderForm.cs:line 94
>    at System.Threading.ExecutionContext.RunInternal(ExecutionContext
> executionContext, ContextCallback callback, Object state, Boolean
> preserveSyncCtx)
>    at System.Threading.ExecutionContext.Run(ExecutionContext
> executionContext, ContextCallback callback, Object state, Boolean
> preserveSyncCtx)
>    at System.Threading.ExecutionContext.Run(ExecutionContext
> executionContext, ContextCallback callback, Object state)
>    at System.Threading.ThreadHelper.ThreadStart()
>
> Inner Exception 1:
> JavaException: class org.apache.ignite.binary.BinaryObjectException: Binary
> type has different field types [typeName=Tables.csvCurrencyRates,
> fieldName=id, fieldTypeName1=UUID, fieldTypeName2=String]
>         at
>
> org.apache.ignite.internal.binary.BinaryUtils.mergeMetadata(BinaryUtils.java:1047)
>         at
>
> org.apache.ignite.internal.processors.cache.binary.CacheObjectBinaryProcessorImpl.addMeta(CacheObjectBinaryProcessorImpl.java:480)
>         at
>
> org.apache.ignite.internal.processors.cache.binary.CacheObjectBinaryProcessorImpl$2.addMeta(CacheObjectBinaryProcessorImpl.java:207)
>         at
>
> org.apache.ignite.internal.binary.BinaryContext.updateMetadata(BinaryContext.java:1332)
>         at
>
> org.apache.ignite.internal.processors.platform.PlatformContextImpl.processMetadata(PlatformContextImpl.java:336)
>         at
>
> org.apache.ignite.internal.processors.platform.binary.PlatformBinaryProcessor.processInStreamOutLong(PlatformBinaryProcessor.java:70)
>         at
>
> org.apache.ignite.internal.processors.platform.PlatformAbstractTarget.processInStreamOutLong(PlatformAbstractTarget.java:87)
>         at
>
> org.apache.ignite.internal.processors.platform.PlatformTargetProxyImpl.inStreamOutLong(PlatformTargetProxyImpl.java:67)
>
>
>
>
>
> --
> Sent from: http://apache-ignite-users.70518.x6.nabble.com/
>