Jump to content

Recommended Posts

Posted (edited)

Reporting it as it just occurred on my live site...

UPDATE `core_members_known_ip_addresses` `core_members_known_ip_addresses`  SET `ip_address`='' WHERE ip_address != '' AND last_seen <1709136738
IPS\Db\Exception: Duplicate entry '0138fdaa72c8135e62b3487f5be7b11d-2970-' for key 'PRIMARY' (1062)
#0 /home/fbaeefdf/live.ynwa.tv/system/Db/Db.php(1159): IPS\_Db->preparedQuery()
#1 /home/fbaeefdf/live.ynwa.tv/applications/core/extensions/core/IpAddresses/Logins.php(33): IPS\_Db->update()
#2 /home/fbaeefdf/live.ynwa.tv/system/Member/Member.php(6504): IPS\core\extensions\core\IpAddresses\_Logins->pruneIpAddresses()
#3 /home/fbaeefdf/live.ynwa.tv/applications/core/tasks/pruneipaddresses.php(43): IPS\_Member::pruneAllLoggedIpAddresses()
#4 /home/fbaeefdf/live.ynwa.tv/system/Task/Task.php(281): IPS\core\tasks\_pruneipaddresses->execute()
#5 /home/fbaeefdf/live.ynwa.tv/applications/core/modules/admin/settings/advanced.php(751): IPS\_Task->run()
#6 /home/fbaeefdf/live.ynwa.tv/system/Dispatcher/Controller.php(107): IPS\core\modules\admin\settings\_advanced->runTask()
#7 /home/fbaeefdf/live.ynwa.tv/applications/core/modules/admin/settings/advanced.php(38): IPS\Dispatcher\_Controller->execute()
#8 /home/fbaeefdf/live.ynwa.tv/system/Dispatcher/Dispatcher.php(153): IPS\core\modules\admin\settings\_advanced->execute()
#9 /home/fbaeefdf/live.ynwa.tv/admin/index.php(13): IPS\_Dispatcher->run()
#10 {main}

I believe this is a knock-on effect of it NOT having been pruning the IP addresses correctly previously - the issue you'll have is that there could be multiple entries for a specific device_key and member_id, but with different IP addresses. Now that task has been fixed to do the pruning, when it tries to remove the IP address on those multiple entries, the PRIMARY key for each row will end up being the same as the key is made up of device_key, member_id, IP address (which is now blank)

Sample content attached:core_members_known_ip_addresses.sql

When the query in the task runs against that data, the error occurs:

UPDATE `core_members_known_ip_addresses` `core_members_known_ip_addresses`  SET `ip_address`='' WHERE ip_address != '' AND last_seen <1709135288

Could contain: File, Page, Text, Webpage

 

 

Edited by Nathan Explosion
  • Nathan Explosion changed the title to 4.7.16 - pruneipaddresses task errors due to duplicate PRIMARY keys
Posted (edited)

Here are your reproduction steps...

  1. Login to a site
  2. Logout
  3. Change your IP address
  4. Login to the site again, ensuring same browser and account
  5. Set the "Remove IP addresses after" setting to whatever you want (I believe the minimum is 1 day)
  6. Wait that amount of time, then run the task.

To reproduce it quicker, you're going to need to manipulate database records to change the last_seen value to meet the criteria.

Potential fix: modify that primary key to include the last_seen value.

Edited by Nathan Explosion
Posted

Thank you for bringing this issue to our attention! I can confirm this should be further reviewed and I have logged an internal bug report for our development team to investigate and address as necessary, in a future maintenance release.

 

Posted

We have released a patch to address this issue. Please go to AdminCP > System > Support and apply the patch from the first/top left box. If you do not see an option to install the patch, you already have the latest release.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...