Realm.Sync.Adapter 中的错误 - 适配器不支持 ArrayMove



我遵循了以下 Realm 指令,介绍如何将自定义适配器从 Realm Cloud Platform 编写到 Kafka。

Realm 平台 - 构建您自己的适配器

代码 :

console.log('Initialising ....')
let creds = Realm.Sync.Credentials.usernamePassword('my_username', 'my_password', false);
Realm.Sync.User.login("https://myapp.us1a.cloud.realm.io", creds).then(user => {
console.log('loged in successully!')
console.log('Waiting for new realm transaction ....')
this.adapter = new Realm.Sync.Adapter(
config.local_path,
'realms://myapp.us1a.cloud.realm.io',
user,
config.realm_path_regex, 
(realm_path) => {
console.log('new transaction received!')
var current_instructions = this.adapter.current(realm_path);
while (current_instructions) {
// if defined, process the current array of instructions
this.process_instructions(current_instructions);
// call advance to progress to the next transaction
this.adapter.advance(realm_path);
current_instructions = this.adapter.current(realm_path);
}
}
)
}).catch(err => {
console.log(err)
})

代码工作正常并开始接收更新,直到有毒导致以下错误并使应用程序崩溃。

错误 :

../src/object-store/src/server/adapter.cpp:524: [realm-core-6.0.4] ArrayMove not supported by adapter. 

异常从 c++ 领域核心库引发 - 从以下方法 https://github.com/realm/realm-object-store/blob/master/src/server/adapter.cpp

void operator()(const Instruction::ArrayMove&)
{
if (!m_list_property_name.size())
return; // FIXME
REALM_TERMINATE("ArrayMove not supported by adapter.");
}

我花了一整天来解决这个问题,但没有运气。 任何建议表示赞赏!

完整的错误消息:

Initialising ....
loged in successully!
Waiting for new realm transaction ....
Connection[1]: Session[1]: client_reset_config = false, Realm exists = true, async open = false, client reset = false
Connection[1]: Connected to endpoint '54.184.28.225:443' (from '192.168.0.101:55162')
Connection[2]: Session[2]: client_reset_config = false, Realm exists = true, async open = false, client reset = false
Connection[3]: Session[3]: client_reset_config = false, Realm exists = true, async open = false, client reset = false
Connection[4]: Session[4]: client_reset_config = false, Realm exists = true, async open = false, client reset = false
Connection[5]: Session[5]: client_reset_config = false, Realm exists = true, async open = false, client reset = false
Connection[6]: Session[6]: client_reset_config = false, Realm exists = true, async open = false, client reset = false
Connection[2]: Connected to endpoint '54.184.28.225:443' (from '192.168.0.101:55169')
Connection[3]: Connected to endpoint '54.184.28.225:443' (from '192.168.0.101:55171')
Connection[4]: Connected to endpoint '54.184.28.225:443' (from '192.168.0.101:55173')
Connection[6]: Connected to endpoint '54.184.28.225:443' (from '192.168.0.101:55175')
Connection[5]: Connected to endpoint '54.184.28.225:443' (from '192.168.0.101:55174')
Connection[7]: Session[7]: client_reset_config = false, Realm exists = true, async open = false, client reset = false
Connection[8]: Session[8]: client_reset_config = false, Realm exists = true, async open = false, client reset = false
Connection[9]: Session[9]: client_reset_config = false, Realm exists = true, async open = false, client reset = false
Connection[7]: Connected to endpoint '54.184.28.225:443' (from '192.168.0.101:55176')
Connection[8]: Connected to endpoint '54.184.28.225:443' (from '192.168.0.101:55177')
Connection[9]: Connected to endpoint '54.184.28.225:443' (from '192.168.0.101:55178')
../src/object-store/src/server/adapter.cpp:524: [realm-core-6.0.4] ArrayMove not supported by adapter.
0   realm.node                          0x0000000106dca6cc _ZN5realm4utilL18terminate_internalERNSt3__118basic_stringstreamIcNS1_11char_traitsIcEENS1_9allocatorIcEEEE + 28
1   realm.node                          0x0000000106dca986 _ZN5realm4util9terminateEPKcS2_lOSt16initializer_listINS0_9PrintableEE + 390
2   realm.node                          0x0000000106941fab _ZNK5realm4sync11Instruction5visitIRN12_GLOBAL__N_133ChangesetCookerInstructionHandlerEEEDaOT_ + 1935
3   realm.node                          0x00000001069f88cd _ZN5realm4sync15ChangesetParser5State9parse_oneEv + 3101
4   realm.node                          0x00000001069f7bf8 _ZN5realm4sync15ChangesetParser5parseERNS_5_impl17NoCopyInputStreamERNS0_18InstructionHandlerE + 184
5   realm.node                          0x0000000106941006 _ZN12_GLOBAL__N_115ChangesetCooker14cook_changesetERKN5realm5GroupEPKcmRNS1_4util12AppendBufferIcNS7_16DefaultAllocatorEEE + 360
6   realm.node                          0x0000000106992282 _ZN5realm5_impl17ClientHistoryImpl27integrate_server_changesetsERKNS_4sync12SyncProgressEPKyPKNS2_11Transformer15RemoteChangesetEmRNS2_11VersionInfoERNS2_21ClientReplicationBase16IntegrationErrorERNS_4util6LoggerEPNSE_20SyncTransactReporterEPKNS2_27SerialTransactSubstitutionsE + 1362
7   realm.node                          0x00000001069c6752 _ZN5realm5_impl14ClientImplBase7Session20integrate_changesetsERNS_4sync21ClientReplicationBaseERKNS3_12SyncProgressEyRKNSt3__16vectorINS3_11Transformer15RemoteChangesetENS9_9allocatorISC_EEEERNS3_11VersionInfoERNS4_16IntegrationErrorE + 114
8   realm.node                          0x00000001069c6fa7 _ZN5realm5_impl14ClientImplBase7Session29initiate_integrate_changesetsEyRKNSt3__16vectorINS_4sync11Transformer15RemoteChangesetENS3_9allocatorIS7_EEEE + 103
9   realm.node                          0x0000000106a0892a _ZN12_GLOBAL__N_111SessionImpl29initiate_integrate_changesetsEyRKNSt3__16vectorIN5realm4sync11Transformer15RemoteChangesetENS1_9allocatorIS6_EEEE + 42
10  realm.node                          0x00000001069c4f6c _ZN5realm5_impl14ClientImplBase7Session24receive_download_messageERKNS_4sync12SyncProgressEyRKNSt3__16vectorINS3_11Transformer15RemoteChangesetENS7_9allocatorISA_EEEE + 636
11  realm.node                          0x00000001069c19af _ZN5realm5_impl14ClientProtocol22parse_message_receivedINS0_14ClientImplBase10ConnectionEEEvRT_PKcm + 7903
12  realm.node                          0x00000001069bba14 _ZN5realm5_impl14ClientImplBase10Connection33websocket_binary_message_receivedEPKcm + 52
13  realm.node                          0x00000001069ee210 _ZN12_GLOBAL__N_19WebSocket17frame_reader_loopEv + 2416
14  realm.node                          0x00000001069cb4a3 _ZN5realm4util7network7Service9AsyncOper29do_recycle_and_execute_helperINSt3__18functionIFvNS5_10error_codeEmEEEJS7_mEEEvbRbT_DpT0_ + 163
15  realm.node                          0x00000001069cb2d7 _ZN5realm4util7network7Service9AsyncOper22do_recycle_and_executeINSt3__18functionIFvNS5_10error_codeEmEEEJRS7_RmEEEvbRT_DpOT0_ + 135
16  realm.node                          0x00000001069cade4 _ZN5realm4util7network7Service14BasicStreamOpsINS1_3ssl6StreamEE16BufferedReadOperINSt3__18functionIFvNS8_10error_codeEmEEEE19recycle_and_executeEv + 212
17  realm.node                          0x00000001069dde5c _ZN5realm4util7network7Service4Impl3runEv + 476
18  realm.node                          0x00000001069fb6fd _ZN5realm4sync6Client3runEv + 29
19  realm.node                          0x000000010697baf7 _ZNSt3__114__thread_proxyINS_5tupleIJNS_10unique_ptrINS_15__thread_structENS_14default_deleteIS3_EEEEZN5realm5_impl10SyncClientC1ENS2_INS7_4util6LoggerENS4_ISB_EEEERKNS7_16SyncClientConfigEEUlvE0_EEEEEPvSJ_ + 42
20  libsystem_pthread.dylib             0x00007fff70510109 _pthread_start + 148
21  libsystem_pthread.dylib             0x00007fff7050bb8b thread_start + 15!!! IMPORTANT: Please send this log and info about Realm SDK version and other relevant reproduction info to help@realm.io.zsh: abort      node adaptor.js

我最终编辑了类 https://github.com/realm/realm-object-store/blob/master/src/server/adapter.cpp 并更改了方法

void operator()(const Instruction::ArrayMove&)
{
if (!m_list_property_name.size())
return; // FIXME
REALM_TERMINATE("ArrayMove not supported by adapter.");
}

void operator()(const Instruction::ArrayMove&)
{
if (!m_list_property_name.size())
return; // FIXME
m_logger.warn("Adapter: Ignoring ArrayMove instruction");
return;
}

并将其作为 https://github.com/realm/realm-js 项目的一部分进行编译。

请参阅项目阅读我了解如何构建它。