Hi team,

Using the 2.10 branch code and the transaction function of cpp thin client, the transaction with id 1 not found error will be throw. the reproduce steps are as follows:

1.start a node use the following config file:

<?xmlversion="1.0"encoding="UTF-8"?>
<beansxmlns="http://www.springframework.org/schema/beans";
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd";>
<beanid="grid.cfg"class="org.apache.ignite.configuration.IgniteConfiguration">
<propertyname="clientMode"value="false"/>
<propertyname="peerClassLoadingEnabled"value="true"/>
<propertyname="binaryConfiguration">
<beanclass="org.apache.ignite.configuration.BinaryConfiguration">
<propertyname="compactFooter"value="false"/>
<propertyname="idMapper">
<beanclass="org.apache.ignite.binary.BinaryBasicIdMapper">
<propertyname="lowerCase"value="true"/>
</bean>
</property>
</bean>
</property>
<propertyname="dataStorageConfiguration">
<beanclass="org.apache.ignite.configuration.DataStorageConfiguration">
<propertyname="defaultDataRegionConfiguration">
<beanclass="org.apache.ignite.configuration.DataRegionConfiguration">
<propertyname="name"value="default"/>
<propertyname="maxSize"value="#{1L * 1024 * 1024 * 1024}"/>
<propertyname="persistenceEnabled"value="false"/>
</bean>
</property>
</bean>
</property>
</bean>
</beans>

2.test code are as follows:

Usually only the first few loop operations may throw an exception, and the subsequent operations are normal.

#include<stdint.h>
#include<iostream>
#include<ignite/thin/ignite_client.h>
#include<ignite/thin/cache/cache_client.h>
#include"ignite/examples/organization.h"
usingnamespaceignite;
usingnamespacethin;
usingnamespacecache;
usingnamespaceexamples;
intmain()
{
IgniteClientConfiguration cfg;
cfg.SetEndPoints("X.X.X.X");
try
{
IgniteClient client = IgniteClient::Start(cfg);
CacheClient<int32_t, Organization> cache = client.GetOrCreateCache<int32_t, Organization>("PutGetExample");
cache.Clear();
intloop = 100;
for(inti = 0; i < loop; i++)
{
ignite::thin::transactions::ClientTransaction transaction = client.ClientTransactions().TxStart(); Organization org("Microsoft", Address("1096 Eddy Street, San Francisco, CA", i));
cache.Put(1, org);
transaction.Commit();
}
Organization orgFromCache = cache.Get(1);
}
catch(IgniteError& err)
{
std::cout << "An error occurred: "<< err.GetText() << std::endl;
returnerr.GetCode();
}
return0;
}

3.server side's log are as follows:

[11:25:35,496][SEVERE][client-connector-#117][ClientListenerNioListener] Failed to process client request [req=o.a.i.i.processors.platform.client.tx.ClientTxEndRequest@569bc2e0] class org.apache.ignite.internal.processors.platform.client.IgniteClientException: Transaction with id 1not found. at org.apache.ignite.internal.processors.platform.client.tx.ClientTxEndRequest.process(ClientTxEndRequest.java:59) at org.apache.ignite.internal.processors.platform.client.ClientRequestHandler.handle(ClientRequestHandler.java:98) at org.apache.ignite.internal.processors.odbc.ClientListenerNioListener.onMessage(ClientListenerNioListener.java:195) at org.apache.ignite.internal.processors.odbc.ClientListenerNioListener.onMessage(ClientListenerNioListener.java:49) at org.apache.ignite.internal.util.nio.GridNioFilterChain$TailFilter.onMessageReceived(GridNioFilterChain.java:279) at org.apache.ignite.internal.util.nio.GridNioFilterAdapter.proceedMessageReceived(GridNioFilterAdapter.java:109) at org.apache.ignite.internal.util.nio.GridNioAsyncNotifyFilter$3.body(GridNioAsyncNotifyFilter.java:97) at org.apache.ignite.internal.util.worker.GridWorker.run(GridWorker.java:120) at org.apache.ignite.internal.util.worker.GridWorkerPool$1.run(GridWorkerPool.java:70) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)


Reply via email to