Hello Igor,
If start two nodes on two hosts and create a cluster, you can reproduce
this problem. If start multiple server nodes on one host, it seems that
there is no problem.
Thin clients only need one.
在 2021/2/3 下午10:02, Igor Sapego 写道:
Hi, I've tried to reproduce an issue you described and could not
reproduce it.
Can you share more details? How many nodes do you run? How many clients
are run? Do you run any other operations in parallel?
Best Regards,
Igor
On Wed, Feb 3, 2021 at 3:00 PM 18624049226 <18624049...@163.com
<mailto:18624049...@163.com>> wrote:
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"
<http://www.springframework.org/schema/beans>
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
<http://www.w3.org/2001/XMLSchema-instance>
xsi:schemaLocation="
http://www.springframework.org/schema/beans
<http://www.springframework.org/schema/beans>
http://www.springframework.org/schema/beans/spring-beans.xsd
<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)