View Issue Details

This issue affects 1 person(s).
 4
IDProjectCategoryView StatusLast Update
20708Feature requestsSurvey participants (Tokens)public2026-09-19 18:18
ReporterDenisChenu Assigned Toc_schmitz  
PrioritynoneSeverity@50@ 
Status acknowledgedResolutionopen 
Summary20708: Concurrent response creation for the same participant
Description

With long survey and some slow servers, there are multiple creations for one particpant.
It can happen too on limesurvey hosting

Steps To Reproduce

Steps to reproduce

Import included LSS, activate with restricted mode
Check settings: not anonymous + response persistence
Launch (replace shnoulle.limesurvey.net by tour own server)

seq 5 | xargs -P5 -n1 sh -c '
  curl -sS \
    -o /tmp/response-$0.html \
    -w "$0 HTTP:%{http_code} time:%{time_total}\n" \
    "https://shnoulle.limesurvey.net/167418?token=TESTTEST&newtest=Y"

(same without newtest=Y)

Expected result

Still have one response

Actual result

4 or 5 response line

TagsNo tags attached.
Attached Files
Bug heat4
Git branch / Pull Request URLN/A
Users affected %

Users monitoring this issue

There are no users monitoring this issue.

Activities

DenisChenu

DenisChenu

2026-09-18 16:54

developer   ~85840

I create a plugin for 5.X and up.

But I think it must be done for the official version too. It happens when one user click multiple times on a link or sometimes when arobot check link before.
We have 2 solutions , both have issue

  1. Add a locking mechanism : create a lock when checking token + survey
  2. Unlock when a response is created (and add register_shutdown_function)
  3. During lock process : send a 409/429 or wait some ms in a loop until it's OK.

There's another issue with this type of surveys: if two people open the same questionnaire with the same token, they overwrite each other's answers with every action, without ever reloading the responses.
But i think it must be managed by plyugin (core or not)

c_schmitz

c_schmitz

2026-09-19 15:36

administrator   ~85843

This is quite an effort for an edge case. It will also create alot of load on servers.
I don't really think it is worth it.

DenisChenu

DenisChenu

2026-09-19 18:18

developer   ~85848

This is quite an effort for an edge case.

OK, then on a plugin, some companies really don't allow multiple lines for one data.

It will also create alot of load on servers.

Not if you send a 409 before all actions. Here are 5 actions at the same time. With a 409 : 1 action and 4 quick actions.

I could propose adding the plugin to the core afterward, with the option to choose between a 409 response and a delay.

Allowing only one person to load a specific token is great too for load on servers, and disabling person 1 sending data and person 2 sending other data (deleting person 1 update).

Issue History

Date Modified Username Field Change
2026-09-18 16:39 DenisChenu New Issue
2026-09-18 16:39 DenisChenu File Added: limesurvey_survey_concurrencies.lss
2026-09-18 16:54 DenisChenu Note Added: 85840
2026-09-18 16:54 DenisChenu Bug heat 0 => 2
2026-09-19 15:35 c_schmitz Assigned To => c_schmitz
2026-09-19 15:35 c_schmitz Status new => acknowledged
2026-09-19 15:36 c_schmitz Note Added: 85843
2026-09-19 15:36 c_schmitz Bug heat 2 => 4
2026-09-19 15:36 c_schmitz Project Bug reports => Feature requests
2026-09-19 18:18 DenisChenu Note Added: 85848