Thanks Alexey, No that’s okay, I am not a contributor. Please go ahead.
From: Alexey Kuznetsov [mailto:[email protected]] Sent: Thursday, 11 May 2017 4:51 PM To: [email protected] Subject: Re: CacheAbstractJdbcStore batch deleteAll bug. Gordon, I created https://issues.apache.org/jira/browse/IGNITE-5199 Would you like to contribute fix for that bug? On Thu, May 11, 2017 at 12:43 PM, Gordon Reid (Nine Mile) <[email protected]<mailto:[email protected]>> wrote: Sorry, I don’t have time to produce a sample right now, but I can see that this bug still exists in ignite 2.0 Just look in CacheAbstractJdbcStore.deleteAll You can see that delStmt never gets updated after it is first initialized Thanks, Gordon. From: Alexey Kuznetsov [mailto:[email protected]<mailto:[email protected]>] Sent: Thursday, 27 April 2017 6:50 PM To: [email protected]<mailto:[email protected]> Subject: Re: CacheAbstractJdbcStore batch deleteAll bug. Hi, Gordon. Do you have a reproducer we could debug? Thanks. On Wed, Apr 26, 2017 at 9:50 AM, Gordon Reid (Nine Mile) <[email protected]<mailto:[email protected]>> wrote: Actually the fix will be a little more complicated, because the variable “em” has already been updated to the new type before the last batch has been executed. From: Gordon Reid (Nine Mile) [mailto:[email protected]<mailto:[email protected]>] Sent: Wednesday, 26 April 2017 12:05 PM To: [email protected]<mailto:[email protected]> Subject: CacheAbstractJdbcStore batch deleteAll bug. Hi Guys, I think there is a problem in CacheAbstractJdbcStore.deleteAll I find that sometimes, I see messages like this [DEBUG] 2017-04-26 11:08:54.097 [flusher-0-#31%null%] CacheJdbcPojoStore - Delete entries from db [cache=D9Cache, keyType=com.nmf.model.trading.TradeKey, cnt=2] [WARN ] 2017-04-26 11:08:54.097 [flusher-0-#31%null%] CacheJdbcPojoStore - Batch deleteAll returned unexpected updated row count [table=public.nmfctrade, entry=RiskRuleKey [id=1], expected=1, actual=0] [WARN ] 2017-04-26 11:08:54.097 [flusher-0-#31%null%] CacheJdbcPojoStore - Batch deleteAll returned unexpected updated row count [table=public.nmfctrade, entry=RiskRuleKey [id=2], expected=1, actual=0] Note the entity types are different! Also look at the attached image. You can see the statement is still targeting Trade, but our entity is now Position. You can see in the code, that the delStmt never gets refreshed, when changing over to a different entity type. for (Object key : keys) { Object keyTypeId = typeIdForObject(key); em = entryMapping(cacheName, keyTypeId); if (delStmt == null) { delStmt = conn.prepareStatement(em.remQry); currKeyTypeId = keyTypeId; } if (!currKeyTypeId.equals(keyTypeId)) { if (log.isDebugEnabled()) log.debug("Delete entries from db [cache=" + U.maskName(cacheName) + ", keyType=" + em.keyType() + ", cnt=" + prepared + "]"); executeBatch(em, delStmt, "deleteAll", fromIdx, prepared, lazyKeys); fromIdx += prepared; prepared = 0; currKeyTypeId = keyTypeId; } I believe should be something like this for (Object key : keys) { Object keyTypeId = typeIdForObject(key); em = entryMapping(cacheName, keyTypeId); if (delStmt == null) { delStmt = conn.prepareStatement(em.remQry); currKeyTypeId = keyTypeId; } if (!currKeyTypeId.equals(keyTypeId)) { if (log.isDebugEnabled()) log.debug("Delete entries from db [cache=" + U.maskName(cacheName) + ", keyType=" + em.keyType() + ", cnt=" + prepared + "]"); executeBatch(em, delStmt, "deleteAll", fromIdx, prepared, lazyKeys); fromIdx += prepared; prepared = 0; currKeyTypeId = keyTypeId; delStmt = conn.prepareStatement(em.remQry); } Thanks, Gordon. This email and any attachments are proprietary & confidential and are intended solely for the use of the individuals to whom it is addressed. Any views or opinions expressed are solely for those of the author and do not necessarily reflect those of Nine Mile Financial Pty. Limited. If you have received this email in error, please let us know immediately by reply email and delete from your system. Nine Mile Financial Pty. Limited. ABN: 346 1349 0252 This email and any attachments are proprietary & confidential and are intended solely for the use of the individuals to whom it is addressed. Any views or opinions expressed are solely for those of the author and do not necessarily reflect those of Nine Mile Financial Pty. Limited. If you have received this email in error, please let us know immediately by reply email and delete from your system. Nine Mile Financial Pty. Limited. ABN: 346 1349 0252 This email and any attachments are proprietary & confidential and are intended solely for the use of the individuals to whom it is addressed. Any views or opinions expressed are solely for those of the author and do not necessarily reflect those of Nine Mile Financial Pty. Limited. If you have received this email in error, please let us know immediately by reply email and delete from your system. Nine Mile Financial Pty. Limited. ABN: 346 1349 0252 -- Alexey Kuznetsov This email and any attachments are proprietary & confidential and are intended solely for the use of the individuals to whom it is addressed. Any views or opinions expressed are solely for those of the author and do not necessarily reflect those of Nine Mile Financial Pty. Limited. If you have received this email in error, please let us know immediately by reply email and delete from your system. Nine Mile Financial Pty. Limited. ABN: 346 1349 0252 -- Alexey Kuznetsov This email and any attachments are proprietary & confidential and are intended solely for the use of the individuals to whom it is addressed. Any views or opinions expressed are solely for those of the author and do not necessarily reflect those of Nine Mile Financial Pty. Limited. If you have received this email in error, please let us know immediately by reply email and delete from your system. Nine Mile Financial Pty. Limited. ABN: 346 1349 0252
