CDash icon indicating copy to clipboard operation
CDash copied to clipboard

Unable to create a new project : no ProjectId specified

Open graslany opened this issue 5 years ago • 6 comments

Hello,

I'm running CDash 2.6.0 and I'm unable to create new projects. When I click the "Create project" button on the sixth and final tab in the project creation UI, nothing happens (no project is created and no error is displayed either).

I've launch Firefox's debug panel and had a look at the request. It returns a HTTP code of 200 (success), however the body of the reply contains the following text :

SQL error in Project Create():SQL error encountered, query hidden.<br>UserProject::Save(): no ProjectId specified{"projectcreated":1,"project":{"Name":"X","Id":null,"Description":null,"HomeUrl":null,"CvsUrl":null,"DocumentationUrl":null,"BugTrackerUrl":null,"BugTrackerFileUrl":null,"BugTrackerNewIssueUrl":null,"BugTrackerType":null,"ImageId":0,"Public":null,"CoverageThreshold":70,"TestingDataUrl":null,"NightlyTime":"01:00:00 UTC","GoogleTracker":null,"EmailLowCoverage":0,"EmailTestTimingChanged":0,"EmailBrokenSubmission":1,"EmailRedundantFailures":0,"CvsViewerType":null,"TestTimeStd":4,"TestTimeStdThreshold":1,"ShowTestTime":0,"TestTimeMaxStatus":3,"EmailMaxItems":5,"EmailMaxChars":255,"EmailAdministrator":0,"ShowIPAddresses":0,"DisplayLabels":0,"ShareLabelFilters":0,"AuthenticateSubmissions":0,"ShowCoverageCode":1,"AutoremoveTimeframe":60,"AutoremoveMaxBuilds":500,"UploadQuota":1,"RobotName":null,"RobotRegex":null,"CTestTemplateScript":null,"WebApiKey":"","BuildErrorFilter":{"ProjectId":null,"PDO":{}},"WarningsFilter":"","ErrorsFilter":"","repositories":[{"id":0,"url":"","branch":"","username":"","password":""}],"name_encoded":"X","ctesttemplatescript":"# From this line down, this script may be customized\n# on the Clients tab of the CDash createProject page.\n#\nif(JOB_MODULE)\n  set(SOURCE_NAME ${JOB_MODULE})\n  if(JOB_TAG)\n    set(SOURCE_NAME ${SOURCE_NAME}-${JOB_TAG})\n  endif()\nelse()\n  set(SOURCE_NAME ${PROJECT_NAME})\n  if(JOB_BUILDNAME_SUFFIX)\n    set(SOURCE_NAME ${SOURCE_NAME}-${JOB_BUILDNAME_SUFFIX})\n  endif()\nendif()\n\nset(CTEST_SOURCE_NAME ${SOURCE_NAME})\nset(CTEST_BINARY_NAME ${SOURCE_NAME}-bin)\nset(CTEST_DASHBOARD_ROOT \"${CLIENT_BASE_DIRECTORY}\")\nset(CTEST_SOURCE_DIRECTORY \"${CTEST_DASHBOARD_ROOT}\/${CTEST_SOURCE_NAME}\")\nset(CTEST_BINARY_DIRECTORY \"${CTEST_DASHBOARD_ROOT}\/${CTEST_BINARY_NAME}\")\nset(CTEST_CMAKE_GENERATOR \"${JOB_CMAKE_GENERATOR}\")\nset(CTEST_BUILD_CONFIGURATION \"${JOB_BUILD_CONFIGURATION}\")\n\nset(CTEST_SITE \"${CLIENT_SITE}\")\nset(CTEST_BUILD_NAME \"${JOB_OS_NAME}-${JOB_OS_VERSION}-${JOB_OS_BITS}-${JOB_COMPILER_NAME}-${JOB_COMPILER_VERSION}\")\nif(JOB_BUILDNAME_SUFFIX)\n  set(CTEST_BUILD_NAME ${CTEST_BUILD_NAME}-${JOB_BUILDNAME_SUFFIX})\nendif()\n\nif(NOT EXISTS \"${CTEST_SOURCE_DIRECTORY}\")\n  set(CTEST_CHECKOUT_COMMAND \"cvs -d ${JOB_REPOSITORY} checkout \")\n  if(JOB_TAG)\n    set(CTEST_CHECKOUT_COMMAND \"${CTEST_CHECKOUT_COMMAND} -r ${JOB_TAG}\")\n  endif()\n  set(CTEST_CHECKOUT_COMMAND \"${CTEST_CHECKOUT_COMMAND} -d ${SOURCE_NAME}\")\n  set(CTEST_CHECKOUT_COMMAND \"${CTEST_CHECKOUT_COMMAND} ${JOB_MODULE}\")\nendif()\nset(CTEST_UPDATE_COMMAND \"cvs\")\n\nfile(WRITE \"${CTEST_BINARY_DIRECTORY}\/CMakeCache.txt\" \"${JOB_INITIAL_CACHE}\")\n\nctest_start(${JOB_BUILDTYPE})\nctest_update(SOURCE ${CTEST_SOURCE_DIRECTORY})\nctest_configure(BUILD \"${CTEST_BINARY_DIRECTORY}\" RETURN_VALUE res)\nctest_build(BUILD \"${CTEST_BINARY_DIRECTORY}\" RETURN_VALUE res)\nctest_test(BUILD \"${CTEST_BINARY_DIRECTORY}\" RETURN_VALUE res)\n# The following lines are used to associate a build id with this job.\nset(CTEST_DROP_SITE ${JOB_DROP_SITE})\nset(CTEST_DROP_LOCATION ${JOB_DROP_LOCATION})\nctest_submit(RETURN_VALUE res)\n\nmessage(\"DONE\")\n","MaxUploadQuota":"10"}}

I've tried to fill many fields as well as only the single mandatory field ("project name"), and I get the same result.

I'm wondering why the request reply contains something that resembles a user manual for ctest. Maybe something is broken is our install, but at this stage I have no clue. How can I start debugging this, please?

graslany avatar Jan 09 '20 08:01 graslany

SQL error encountered, query hidden.

That's the main clue to dig into.

To get CDash to actually log what SQL error occurred, you can edit config.local.php and set $CDASH_PRODUCTION_MODE = false;

Feel free to paste the error here if it isn't clear what the problem is.

zackgalbreath avatar Jan 09 '20 14:01 zackgalbreath

Thanks, I set the production mode to false long enough to re-run my query, tried to create a project (I named it "Test project" and filled nothing else)n and got this in the reply body :

SQL error in Project Create():Incorrect integer value: '' for column 'public' at row 1
UserProject::Save(): no ProjectId specified{"projectcreated":1,"project":{"Name":"Test project","Id":null,"Description":null,"HomeUrl":null,"CvsUrl":null,"DocumentationUrl":null,"BugTrackerUrl":null,"BugTrackerFileUrl":null,"BugTrackerNewIssueUrl":null,"BugTrackerType":null,"ImageId":0,"Public":null,"CoverageThreshold":70,"TestingDataUrl":null,"NightlyTime":"01:00:00 UTC","GoogleTracker":null,"EmailLowCoverage":0,"EmailTestTimingChanged":0,"EmailBrokenSubmission":1,"EmailRedundantFailures":0,"CvsViewerType":null,"TestTimeStd":4,"TestTimeStdThreshold":1,"ShowTestTime":0,"TestTimeMaxStatus":3,"EmailMaxItems":5,"EmailMaxChars":255,"EmailAdministrator":0,"ShowIPAddresses":0,"DisplayLabels":0,"ShareLabelFilters":0,"AuthenticateSubmissions":0,"ShowCoverageCode":1,"AutoremoveTimeframe":60,"AutoremoveMaxBuilds":500,"UploadQuota":1,"RobotName":null,"RobotRegex":null,"CTestTemplateScript":null,"WebApiKey":"","BuildErrorFilter":{"ProjectId":null,"PDO":{}},"WarningsFilter":"","ErrorsFilter":"","repositories":[{"id":0,"url":"","branch":"","username":"","password":""}],"name_encoded":"Test+project","ctesttemplatescript":"# From this line down, this script may be customized\n# on the Clients tab of the CDash createProject page.\n#\nif(JOB_MODULE)\n set(SOURCE_NAME ${JOB_MODULE})\n if(JOB_TAG)\n set(SOURCE_NAME ${SOURCE_NAME}-${JOB_TAG})\n endif()\nelse()\n set(SOURCE_NAME ${PROJECT_NAME})\n if(JOB_BUILDNAME_SUFFIX)\n set(SOURCE_NAME ${SOURCE_NAME}-${JOB_BUILDNAME_SUFFIX})\n endif()\nendif()\n\nset(CTEST_SOURCE_NAME ${SOURCE_NAME})\nset(CTEST_BINARY_NAME ${SOURCE_NAME}-bin)\nset(CTEST_DASHBOARD_ROOT \"${CLIENT_BASE_DIRECTORY}\")\nset(CTEST_SOURCE_DIRECTORY \"${CTEST_DASHBOARD_ROOT}\/${CTEST_SOURCE_NAME}\")\nset(CTEST_BINARY_DIRECTORY \"${CTEST_DASHBOARD_ROOT}\/${CTEST_BINARY_NAME}\")\nset(CTEST_CMAKE_GENERATOR \"${JOB_CMAKE_GENERATOR}\")\nset(CTEST_BUILD_CONFIGURATION \"${JOB_BUILD_CONFIGURATION}\")\n\nset(CTEST_SITE \"${CLIENT_SITE}\")\nset(CTEST_BUILD_NAME \"${JOB_OS_NAME}-${JOB_OS_VERSION}-${JOB_OS_BITS}-${JOB_COMPILER_NAME}-${JOB_COMPILER_VERSION}\")\nif(JOB_BUILDNAME_SUFFIX)\n set(CTEST_BUILD_NAME ${CTEST_BUILD_NAME}-${JOB_BUILDNAME_SUFFIX})\nendif()\n\nif(NOT EXISTS \"${CTEST_SOURCE_DIRECTORY}\")\n set(CTEST_CHECKOUT_COMMAND \"cvs -d ${JOB_REPOSITORY} checkout \")\n if(JOB_TAG)\n set(CTEST_CHECKOUT_COMMAND \"${CTEST_CHECKOUT_COMMAND} -r ${JOB_TAG}\")\n endif()\n set(CTEST_CHECKOUT_COMMAND \"${CTEST_CHECKOUT_COMMAND} -d ${SOURCE_NAME}\")\n set(CTEST_CHECKOUT_COMMAND \"${CTEST_CHECKOUT_COMMAND} ${JOB_MODULE}\")\nendif()\nset(CTEST_UPDATE_COMMAND \"cvs\")\n\nfile(WRITE \"${CTEST_BINARY_DIRECTORY}\/CMakeCache.txt\" \"${JOB_INITIAL_CACHE}\")\n\nctest_start(${JOB_BUILDTYPE})\nctest_update(SOURCE ${CTEST_SOURCE_DIRECTORY})\nctest_configure(BUILD \"${CTEST_BINARY_DIRECTORY}\" RETURN_VALUE res)\nctest_build(BUILD \"${CTEST_BINARY_DIRECTORY}\" RETURN_VALUE res)\nctest_test(BUILD \"${CTEST_BINARY_DIRECTORY}\" RETURN_VALUE res)\n# The following lines are used to associate a build id with this job.\nset(CTEST_DROP_SITE ${JOB_DROP_SITE})\nset(CTEST_DROP_LOCATION ${JOB_DROP_LOCATION})\nctest_submit(RETURN_VALUE res)\n\nmessage(\"DONE\")\n","MaxUploadQuota":"10"}}

graslany avatar Jan 20 '20 13:01 graslany

As a "public" variable name was mentionned, I tried checking "Public dashboard" in the first tab when creating the project. This allowed me to create the project succesfully. Unchecking this box after the first save and clicking "Update project" also worked apparently.

graslany avatar Jan 20 '20 13:01 graslany

If no further issue is encountered when we use the projects created, this workaround may be satisfying. However it would be nice to know what the root cause of the bug is, in order to prove that it is an isolated bug and not a symptom of some bigger problem.

Could you please tell me what kind of additional information I could provide to help determining the nature of the underlying problem?

graslany avatar Jan 20 '20 14:01 graslany

I'm glad you found your way around this problem. Thanks for sharing the details.

On Mon, Jan 20, 2020 at 8:45 AM Yves Grasland [email protected] wrote:

SQL error in Project Create():Incorrect integer value: '' for column 'public'

This looks familiar. IIRC, it comes down to a MySQL setting on how uninitialized variables are treated. Nonetheless, it seems like a bug in CDash to me. I'll take a closer look and fix it if it still persists in master.

zackgalbreath avatar Jan 20 '20 14:01 zackgalbreath

I have run into this issue also.... any updates?

azukaitis avatar Jun 10 '20 16:06 azukaitis