Skip to Main Content

GoldenGate

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

Interested in getting your voice heard by members of the Developer Marketing team at Oracle? Check out this post for AppDev or this post for AI focus group information.

Golden Gate Big Data initial load error

RobeenSep 2 2020 — edited Sep 3 2020

GoldenGate Big data 19c on target.

GoldenGate 18c on source.

Hello Team,

I followed the steps in Big Data Initial load for Kafka / HBase ( Doc ID 2370098.1 ) to configure my initial load.

I am getting error attached on report file when executing the initial load extract on source.

Report file of intial extract:

2020-09-02 11:45:33  INFO    OGG-01017  Wildcard resolution set to IMMEDIATE because SOURCEISTABLE is used.

***********************************************************************

                 Oracle GoldenGate Capture for Oracle

    Version 18.1.0.0.0 OGGCORE_18.1.0.0.0_PLATFORMS_180928.0432_FBO

   Linux, x64, 64bit (optimized), Oracle 18c on Sep 29 2018 07:26:15

Copyright (C) 1995, 2018, Oracle and/or its affiliates. All rights reserved.

                    Starting at 2020-09-02 11:45:33

***********************************************************************

Operating System Version:

Linux

Version #1 SMP Wed Jul 1 18:23:37 EDT 2015, Release 2.6.32-573.el6.x86_64

Node: RHIS-BITEST-01

Machine: x86_64

                         soft limit   hard limit

Address Space Size   :    unlimited    unlimited

Heap Size            :    unlimited    unlimited

File Size            :    unlimited    unlimited

CPU Time             :    unlimited    unlimited

Process id: 21248

Description:

***********************************************************************

**            Running with the following parameters                  **

***********************************************************************

2020-09-02 11:45:33  INFO    OGG-03059  Operating system character set identified as UTF-8.

2020-09-02 11:45:33  INFO    OGG-02695  ANSI SQL parameter syntax is used for parameter parsing.

2020-09-02 11:45:33  INFO    OGG-01360  EXTRACT is running in Initial Load mode.

2020-09-02 11:45:33  INFO    OGG-01889  Flush size (max message size) is set to 27,985.

EXTRACT ini_ext

USERIDALIAS BITEXT

RMTHOST 10.124.0.88, MGRPORT 7888

RMTTASK REPLICAT, GROUP irmongo

TABLE STREAMSET.TEST,SQLPREDICATE 'AS OF SCN 293804635639';

2020-09-02 11:45:34  INFO    OGG-01851  filecaching started: thread ID: 140409393112832.

2020-09-02 11:45:34  INFO    OGG-01815  Virtual Memory Facilities for: COM

    anon alloc: mmap(MAP_ANON)  anon free: munmap

    file alloc: mmap(MAP_SHARED)  file free: munmap

    target directories:

    /data1/ogg/dirtmp.

Database Version:

Oracle Database 18c Enterprise Edition Release 18.0.0.0.0 - Production

Database Language and Character Set:

NLS_LANGUAGE     = "AMERICAN"

NLS_TERRITORY    = "AMERICA"

NLS_CHARACTERSET = "AL32UTF8"

2020-09-02 11:45:34  WARNING OGG-06439  No unique key is defined for table TEST. All viable columns will be used to represent the key, but may not guarantee uniqueness. KEYCOLS may be used to define the key.

2020-09-02 11:45:34  INFO    OGG-06509  Using the following key columns for source table STREAMSET.TEST: B, NAME, ADDRESS.

2020-09-02 11:45:42  INFO    OGG-02911  Processing table STREAMSET.TEST.

2020-09-02 11:45:42  WARNING OGG-01194  EXTRACT task irmongo abended : Initial data load error reported by REPLICAT.

Source Context :

  SourceModule            : [er.idlx]

  SourceID                : [/scratch/aime/adestore/views/aime_adc2280123/oggcore/OpenSys/src/app/er/idlx.c]

  SourceMethod            : [IDLX_complete_tcp_msg]

  SourceLine              : [423]

  ThreadBacktrace         : [17] elements

                          : [/data1/ogg/libgglog.so(CMessageContext::AddThreadContext())]

                          : [/data1/ogg/libgglog.so(CMessageFactory::CreateMessage(CSourceContext*, unsigned int, ...))]

                          : [/data1/ogg/libgglog.so(_MSG_(CSourceContext*, int, CMessageFactory::MessageDisposition))]

                          : [/data1/ogg/extract(IDLX_complete_tcp_msg)]

                          : [/data1/ogg/extract(ggs::gglib::ggtrail::LegacyTrailDataTarget::complete_tcp_msg(extract_def*))]

                          : [/data1/ogg/extract(ggs::gglib::ggtrail::LegacyTrailDataTarget::flush_tcp(extract_def*, bool))]

                          : [/data1/ogg/extract()]

                          : [/data1/ogg/extract(ggs::gglib::ggtrail::LegacyTrailDataTarget::flush(bool))]

                          : [/data1/ogg/extract(ggs::er::DatabaseDataSource::processSourceTables())]

                          : [/data1/ogg/extract(ggs::er::OraDatabaseDataSource::processSourceTables())]

                          : [/data1/ogg/extract()]

                          : [/data1/ogg/extract(ggs::gglib::MultiThreading::MainThread::ExecMain())]

                          : [/data1/ogg/extract(ggs::gglib::MultiThreading::Thread::RunThread(ggs::gglib::MultiThreading::Thread::ThreadArgs*))]

                          : [/data1/ogg/extract(ggs::gglib::MultiThreading::MainThread::Run(int, char**))]

                          : [/data1/ogg/extract(main)]

                          : [/lib64/libc.so.6(__libc_start_main)]

                          : [/data1/ogg/extract()]

2020-09-02 11:45:42  ERROR   OGG-01203  EXTRACT abending.

2020-09-02 11:45:42  ERROR   OGG-01668  PROCESS ABENDING.

Report file of replicat:

TARGET_IRMONGO.rpt

***********************************************************************

                    Oracle GoldenGate for Big Data

                    Version 19.1.0.0.1 (Build 003)

                                  

                      Oracle GoldenGate Delivery

  Version 19.1.0.0.2 OGGCORE_OGGADP.19.1.0.0.2_PLATFORMS_190916.0039

    Linux, x64, 64bit (optimized), Generic on Sep 16 2019 02:18:16

Copyright (C) 1995, 2019, Oracle and/or its affiliates. All rights reserved.

                    Starting at 2020-09-02 11:46:46

***********************************************************************

Operating System Version:

Linux

Version #1 SMP Fri Oct 13 10:46:25 EDT 2017, Release 3.10.0-693.5.2.el7.x86_64

Node: RH-DATWHSE-DEV.mtg.local

Machine: x86_64

                         soft limit   hard limit

Address Space Size   :    unlimited    unlimited

Heap Size            :    unlimited    unlimited

File Size            :    unlimited    unlimited

CPU Time             :    unlimited    unlimited

Process id: 8957

Description:

***********************************************************************

**            Running with the following parameters                  **

***********************************************************************

2020-09-02 11:46:51  INFO    OGG-03059  Operating system character set identified as UTF-8.

2020-09-02 11:46:51  INFO    OGG-02695  ANSI SQL parameter syntax is used for parameter parsing.

2020-09-02 11:46:51  INFO    OGG-01360  REPLICAT is running in Remote Task mode.

REPLICAT irmongo

TARGETDB LIBFILE libggjava.so SET property=dirprm/mongo.props

2020-09-02 11:46:51  INFO    OGG-15052  Using Java class path: .:ggjava/ggjava.jar:./dirprm:ggjava/resources/lib/optional/log4j-api-2.11.2.jar:ggjava/resources/lib/optional/log4j-core-2.11.2.jar:ggjava/resources/lib/optional/log4j-slf4j-impl-2.11.2.jar.

Sep 02, 2020 11:46:52 AM org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions

INFO: Loading XML bean definitions from class path resource [oracle/goldengate/datasource/DataSource-context.xml]

Sep 02, 2020 11:46:52 AM org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions

INFO: Loading XML bean definitions from class path resource [config/ggue-context.xml]

Sep 02, 2020 11:46:52 AM org.springframework.beans.factory.support.DefaultListableBeanFactory registerBeanDefinition

INFO: Overriding bean definition for bean 'dataSourceConfig' with a different definition: replacing [Generic bean: class [oracle.goldengate.datasource.DataSourceConfig]; scope=singleton; abstract=false; lazyInit=false; autowireMode=0; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=null; factoryMethodName=null; initMethodName=null; destroyMethodName=null; defined in class path resource [oracle/goldengate/datasource/DataSource-context.xml]] with [Generic bean: class [oracle.goldengate.datasource.DataSourceConfig]; scope=singleton; abstract=false; lazyInit=false; autowireMode=0; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=null; factoryMethodName=null; initMethodName=null; destroyMethodName=null; defined in class path resource [config/ggue-context.xml]]

Sep 02, 2020 11:46:52 AM org.springframework.beans.factory.support.DefaultListableBeanFactory registerBeanDefinition

INFO: Overriding bean definition for bean 'versionInfo' with a different definition: replacing [Generic bean: class [oracle.goldengate.util.VersionInfo]; scope=singleton; abstract=false; lazyInit=false; autowireMode=0; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=null; factoryMethodName=null; initMethodName=null; destroyMethodName=null; defined in class path resource [oracle/goldengate/datasource/DataSource-context.xml]] with [Generic bean: class [oracle.goldengate.util.VersionInfo]; scope=singleton; abstract=false; lazyInit=false; autowireMode=0; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=null; factoryMethodName=null; initMethodName=null; destroyMethodName=null; defined in class path resource [config/ggue-context.xml]]

Sep 02, 2020 11:46:52 AM org.springframework.context.support.GenericApplicationContext prepareRefresh

INFO: Refreshing org.springframework.context.support.GenericApplicationContext@6fe7aac8: startup date [Wed Sep 02 11:46:52 MUT 2020]; root of context hierarchy

Oracle GoldenGate for Big Data, 19.1.0.0.1.003

Copyright (c) 2007, 2019. Oracle and/or its affiliates. All rights reserved

Built with Java 1.8.0_202  (class version: 52.0)

REPORTCOUNT EVERY 1 MINUTES, RATE

GROUPTRANSOPS 1

MAP STREAMSET.TEST, TARGET DWHMOBILE.TEST;

2020-09-02 11:46:53  INFO    OGG-01815  Virtual Memory Facilities for: COM

    anon alloc: mmap(MAP_ANON)  anon free: munmap

    file alloc: mmap(MAP_SHARED)  file free: munmap

    target directories:

    /u01/oracle/oggdb/mongo/dirtmp.

2020-09-02 11:46:53  INFO    OGG-25340 

Database Version:.

2020-09-02 11:46:53  INFO    OGG-25341 

Database Language and Character Set:.

***********************************************************************

**                     Run Time Messages                             **

***********************************************************************

2020-09-02 11:46:53  INFO    OGG-06505  MAP resolved (entry STREAMSET.TEST): MAP "STREAMSET"."TEST", TARGET DWHMOBILE.TEST.

2020-09-02 11:46:53  INFO    OGG-02756  The definition for table STREAMSET.TEST is obtained from the trail file.

2020-09-02 11:46:53  INFO    OGG-15056  The definition for target table DWHMOBILE.TEST is derived from the source table DWHMOBILE.TEST.

2020-09-02 11:46:53  INFO    OGG-06511  Using following columns in default map by name: B, NAME, ADDRESS.

2020-09-02 11:46:53  INFO    OGG-06510  Using the following key columns for target table DWHMOBILE.TEST: B, NAME, ADDRESS.

Exception in thread "main" java.lang.NoClassDefFoundError: org/bson/types/Decimal128

at oracle.goldengate.handler.mongodb.DB.getMappedMongoColumnObject(DB.java:702)

at oracle.goldengate.handler.mongodb.DB.getColumnValue(DB.java:609)

at oracle.goldengate.handler.mongodb.operations.InsertOperationHandler.getFormattedData(InsertOperationHandler.java:99)

at oracle.goldengate.handler.mongodb.operations.InsertOperationHandler.process(InsertOperationHandler.java:48)

at oracle.goldengate.handler.mongodb.MongoDBHandler.operationAdded(MongoDBHandler.java:159)

at oracle.goldengate.datasource.DsEventManager$4.send(DsEventManager.java:449)

at oracle.goldengate.datasource.DsEventManager.distributeEvent(DsEventManager.java:115)

at oracle.goldengate.datasource.DsEventManager.fireOperationAdded(DsEventManager.java:458)

at oracle.goldengate.datasource.AbstractDataSource.fireOperationAdded(AbstractDataSource.java:482)

at oracle.goldengate.datasource.UserExitDataSource.addOperationToTransactionAndFireEvent(UserExitDataSource.java:2203)

at oracle.goldengate.datasource.UserExitDataSource.createOperation(UserExitDataSource.java:1598)

at oracle.goldengate.datasource.UserExitDataSource.createOperation(UserExitDataSource.java:1346)

Caused by: java.lang.ClassNotFoundException: org.bson.types.Decimal128

at java.net.URLClassLoader.findClass(URLClassLoader.java:382)

at java.lang.ClassLoader.loadClass(ClassLoader.java:418)

at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:355)

at java.lang.ClassLoader.loadClass(ClassLoader.java:351)

... 12 more

2020-09-02 11:46:53  WARNING OGG-00869  java.lang.ClassNotFoundException: org.bson.types.Decimal128.

Source Context :

  SourceModule            : [gglib.ggdal.adapter.java]

  SourceID                : [ggdal/Adapter/Java/JavaAdapter.cpp]

  SourceMethod            : [HandleJavaException]

  SourceLine              : [250]

  ThreadBacktrace         : [19] elements

                          : [/u01/oracle/oggdb/mongo/libgglog.so(CMessageContext::AddThreadContext())]

                          : [/u01/oracle/oggdb/mongo/libgglog.so(CMessageFactory::CreateMessage(CSourceContext*, unsigned int, ...))]

                          : [/u01/oracle/oggdb/mongo/libgglog.so(_MSG_String(CSourceContext*, int, char const*, CMessageFactory::MessageDisposition))]

                          : [/u01/oracle/oggdb/mongo/libggjava.so()]

                          : [/u01/oracle/oggdb/mongo/libggjava.so(ggs::gglib::ggdal::CJavaRecordWriter::WriteInByteBuffer(ggs::gglib::ggdal::CDALRecord const&, int&, bool&, ggs::gglib::ggdal::CDALError&))]

                          : [/u01/oracle/oggdb/mongo/replicat(ggs::gglib::ggdal::CDALRecordWriter::Write(ggs::gglib::ggdal::CDALRecord const&, int&, bool&, ggs::gglib::ggdal::CDALError&))]

                          : [/u01/oracle/oggdb/mongo/replicat(GenericImpl::Write(ObjectMetadata*, std_rec_hdr_def const*, ggs::gglib::ggdal::CDALRecord&))]

                          : [/u01/oracle/oggdb/mongo/replicat(execute_statement(ggs::gglib::gglcr::CommonLCR const*, char*, ObjectMetadata*, short, short*, short, extr_ptr_def*, int*, char*, unsigned long, void*, sql_stmt_params_t*))]

                          : [/u01/oracle/oggdb/mongo/replicat(perform_sql_statements(ObjectMetadata*, ggs::gglib::gglcr::CommonLCR const*, short, char*, short*, short, extr_ptr_def*, ggs::gglib::ggmetadata::MetadataContext&))]

                          : [/u01/oracle/oggdb/mongo/replicat(ggs::er::ReplicatContext::replicate_io(ggs::gglib::gglcr::CommonLCR const*, ggs::gglib::gglcr::CommonLCR*, extr_ptr_def*, bool, int&, RepCsn&, bool*))]

                          : [/u01/oracle/oggdb/mongo/replicat(ggs::er::ReplicatContext::processRecord(ggs::gglib::gglcr::CommonLCR const*, ggs::gglib::gglcr::CommonLCR*, extr_ptr_def*&, extr_ptr_def*&, bool&, int&, bool, RepCsn&))]

                          : [/u01/oracle/oggdb/mongo/replicat(ggs::er::ReplicatContext::processReplicatLoop())]

                          : [/u01/oracle/oggdb/mongo/replicat()]

                          : [/u01/oracle/oggdb/mongo/replicat(ggs::gglib::MultiThreading::MainThread::ExecMain())]

                          : [/u01/oracle/oggdb/mongo/replicat(ggs::gglib::MultiThreading::Thread::RunThread(ggs::gglib::MultiThreading::Thread::ThreadArgs*))]

                          : [/u01/oracle/oggdb/mongo/replicat(ggs::gglib::MultiThreading::MainThread::Run(int, char**))]

                          : [/u01/oracle/oggdb/mongo/replicat(main)]

                          : [/lib64/libc.so.6(__libc_start_main)]

                          : [/u01/oracle/oggdb/mongo/replicat()]

2020-09-02 11:46:53  ERROR   OGG-15051  Java or JNI exception:

java.lang.NoClassDefFoundError: org/bson/types/Decimal128.

***********************************************************************

*                   ** Run Time Statistics **                         *

***********************************************************************

Report at 2020-09-02 11:46:58 (activity since 2020-09-02 11:46:53)

No records were replicated.

2020-09-02 11:46:58  ERROR   OGG-01668  PROCESS ABENDING.

CACHE OBJECT MANAGER statistics

CACHE MANAGER VM USAGE

vm current     =      0    vm anon queues =      0

vm anon in use =      0    vm file        =      0

vm used max    =      0    cachesize      =     16G

CACHE CONFIGURATION

cache size            =  16G   cache force paging   =  24G

pageout eligible size =   8M   cache vm pageout max =  64M

================================================================================

RUNTIME STATS FOR SUPERPOOL

Note: CACHE objects are often but not always proxies for transactions

CACHE Object Stats

objects active  =      0    max concurrent =      0

non-zero total  =      0    objects total  =      0

CACHE File Caching

filecache rqsts        =      0    bytes to disk      =      0

file retrieves         =      0    objs filecached    =      0

queue entries          =      0    queue processed    =      0

queue entry not needed =      0    queue not signaled =      0

fc requesting obj      =      0

CACHE MANAGEMENT

buffer links   =      0   anon gets   =      0

forced unmaps  =      0   cnnbl try   =      0

cached out     =      0

Note: For statistics tables below each specification represents a power of

two bucket.

For example: '|4K: 1234 |8K:' represents 1234 items between 4K and 8K-1

Allocation Request Distribution

< 128B:       0

128B:        0     | 256B:        0     | 512B:        0     |   1K:        0

   2K:        0     |   4K:        0     |   8K:        0     |  16K:        0

  32K:        0     |  64K:        0     | 128K:        0     | 256K:        0

512K:        0     |   1M:        0     |   2M:        0     |   4M:        0

   8M:        0     |  16M:        0     |  32M:        0     |  64M:        0

128M:        0     | 256M:        0     | 512M:        0     |   1G:        0

   2G:        0

Cached Object Size Distribution

    0:        0

< 4K:        0

   4K:        0     |   8K:        0     |  16K:        0     |  32K:        0

  64K:        0     | 128K:        0     | 256K:        0     | 512K:        0

   1M:        0     |   2M:        0     |   4M:        0     |   8M:        0

  16M:        0     |  32M:        0     |  64M:        0     | 128M:        0

256M:        0     | 512M:        0     |   1G:        0     |   2G:        0

   4G:        0     |   8G:        0     |  16G:        0     |  32G:        0

  64G:        0     | 128G:        0     | 256G:        0     | 512G:        0

   1T:        0     |   2T:        0     |   4T:        0     |   8T:        0

  16T:        0     |  32T:        0     |  64T:        0     | 128T:        0

256T:        0     | 512T:        0     |   1P:        0     |   2P:        0

================================================================================

CUMULATIVE STATS FOR SUPERPOOL (PREVIOUS RUNS ONLY)

Note: CACHE objects are often but not always proxies for transactions

CACHE Object Stats

objects active  =      0    max concurrent =      0

non-zero total  =      0    objects total  =      0

CACHE File Caching

filecache rqsts        =      0    bytes to disk      =      0

file retrieves         =      0    objs filecached    =      0

queue entries          =      0    queue processed    =      0

queue entry not needed =      0    queue not signaled =      0

fc requesting obj      =      0

CACHE MANAGEMENT

buffer links   =      0   anon gets   =      0

forced unmaps  =      0   cnnbl try   =      0

cached out     =      0

Allocation Request Distribution

< 128B:       0

128B:        0     | 256B:        0     | 512B:        0     |   1K:        0

   2K:        0     |   4K:        0     |   8K:        0     |  16K:        0

  32K:        0     |  64K:        0     | 128K:        0     | 256K:        0

512K:        0     |   1M:        0     |   2M:        0     |   4M:        0

   8M:        0     |  16M:        0     |  32M:        0     |  64M:        0

128M:        0     | 256M:        0     | 512M:        0     |   1G:        0

   2G:        0

Cached Object Size Distribution

    0:        0

< 4K:        0

   4K:        0     |   8K:        0     |  16K:        0     |  32K:        0

  64K:        0     | 128K:        0     | 256K:        0     | 512K:        0

   1M:        0     |   2M:        0     |   4M:        0     |   8M:        0

  16M:        0     |  32M:        0     |  64M:        0     | 128M:        0

256M:        0     | 512M:        0     |   1G:        0     |   2G:        0

   4G:        0     |   8G:        0     |  16G:        0     |  32G:        0

  64G:        0     | 128G:        0     | 256G:        0     | 512G:        0

   1T:        0     |   2T:        0     |   4T:        0     |   8T:        0

  16T:        0     |  32T:        0     |  64T:        0     | 128T:        0

256T:        0     | 512T:        0     |   1P:        0     |   2P:        0

QUEUE Statistics

num queues =     13     q hits =      0      q misses =      0

queue size  q hits  curlen  maxlen     cannibalized

  0   64K      0       0       0       0

  1  128K      0       0       0       0

  2  256K      0       0       0       0

  3  512K      0       0       0       0

  4    1M      0       0       0       0

  5    2M      0       0       0       0

  6    4M      0       0       0       0

  7    8M      0       0       0       0

  8   16M      0       0       0       0

  9   32M      0       0       0       0

10   64M      0       0       0       0

11  128M      0       0       0       0

12  256M      0       0       0       0

================================================================================

RUNTIME STATS FOR CACHE POOL #0

POOL INFO   group: irmongo  id: p8957_BLOB  instance: 0  tid: (nil)

objects active =        0   objects concurrent (max) =     0

objects total  =        0   (0 )

flag           = 0x000000030

last error     = (0=<none>)

Allocation Request Distribution

< 128B:       0

128B:        0     | 256B:        0     | 512B:        0     |   1K:        0

   2K:        0     |   4K:        0     |   8K:        0     |  16K:        0

  32K:        0     |  64K:        0     | 128K:        0     | 256K:        0

512K:        0     |   1M:        0     |   2M:        0     |   4M:        0

   8M:        0     |  16M:        0     |  32M:        0     |  64M:        0

128M:        0     | 256M:        0     | 512M:        0     |   1G:        0

   2G:        0

================================================================================

CUMULATIVE STATS FOR CACHE POOL #0 (PREVIOUS RUNS ONLY)

POOL INFO   group: irmongo  id: p8957_BLOB  instance: 0  tid: (nil)

objects active =        0   objects concurrent (max) =     0

objects total  =        0   (0 )

flag           = 0x000000030

last error     = (0=<none>)

Allocation Request Distribution

< 128B:       0

128B:        0     | 256B:        0     | 512B:        0     |   1K:        0

   2K:        0     |   4K:        0     |   8K:        0     |  16K:        0

  32K:        0     |  64K:        0     | 128K:        0     | 256K:        0

512K:        0     |   1M:        0     |   2M:        0     |   4M:        0

   8M:        0     |  16M:        0     |  32M:        0     |  64M:        0

128M:        0     | 256M:        0     | 512M:        0     |   1G:        0

   2G:        0

Sep 02, 2020 11:46:58 AM org.springframework.context.support.GenericApplicationContext doClose

INFO: Closing org.springframework.context.support.GenericApplicationContext@6fe7aac8: startup date [Wed Sep 02 11:46:52 MUT 2020]; root of context hierarchy

Kindly advise.

Regards,

Comments

Post Details

Added on Sep 2 2020
12 comments
1,737 views