destroy cache holding residual metadata in memory (2.7)

classic Classic list List threaded Threaded
4 messages Options
wt wt
Reply | Threaded
Open this post in threaded view
|

destroy cache holding residual metadata in memory (2.7)

This post was updated on .
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
 ignite server, clear up the work folder 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/
Denis Magda-2 Denis Magda-2
Reply | Threaded
Open this post in threaded view
|

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

+ 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 <[hidden email]> 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/
yakov yakov
Reply | Threaded
Open this post in threaded view
|

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

Wayne, can you please share a reproducer for this problem that can be launched from IDE?

--Yakov
yakov yakov
Reply | Threaded
Open this post in threaded view
|

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

In reply to this post by Denis Magda-2
Wayne, can you please share a reproducer for this problem that can be launched from IDE?

--Yakov