-
Improvement
-
Resolution: Fixed
-
Minor
-
Powered by SuggestiMate
In a busy system with many quick jobs/saves (e.g. maven multi module projects!) then the master effectively becomes one big bottleneck as the OldDataMonitor is called on each new save and this uses a lock serializing all write requests.
The code should be investigated to see if either it can be made lockfree or at least reduce the scope of the locks.
[JENKINS-30139] OldDataMonitor makes Jenkins single threaded for all saves.
Integrated in jenkins_main_trunk #4279
JENKINS-30139 Switch from a big fat lock to a concurrent collection (Revision 2c5deeb6c061a91aeac232e978756de3b1d0be98)
JENKINS-30139 Add @Restricted to prevent external use of internal data (Revision 9a57858a925aea1a01da9061d60e91e37d319873)
JENKINS-30139 Forgot to change this one (Revision 67cce20291be4d4002d7e293f1e0de6ee60058f3)
JENKINS-30139 Oleg wants to keep the data accessible so we have to go for immutable (Revision e9471744338546539ed163d106763be021f278f8)
Result = SUCCESS
stephen connolly : 2c5deeb6c061a91aeac232e978756de3b1d0be98
Files :
- core/src/main/java/hudson/diagnosis/OldDataMonitor.java
stephen connolly : 9a57858a925aea1a01da9061d60e91e37d319873
Files :
- core/src/main/java/hudson/diagnosis/OldDataMonitor.java
stephen connolly : 67cce20291be4d4002d7e293f1e0de6ee60058f3
Files :
- core/src/main/java/hudson/diagnosis/OldDataMonitor.java
stephen connolly : e9471744338546539ed163d106763be021f278f8
Files :
- core/src/main/java/hudson/diagnosis/OldDataMonitor.java
Code changed in jenkins
User: Stephen Connolly
Path:
core/src/main/java/hudson/diagnosis/OldDataMonitor.java
http://jenkins-ci.org/commit/jenkins/d68bbfcf86531f0b27cc2ba3bf0b8b8666ee4813
Log:
JENKINS-30139 Switch from a big fat lock to a concurrent collection
(cherry picked from commit 2c5deeb6c061a91aeac232e978756de3b1d0be98)
Code changed in jenkins
User: Stephen Connolly
Path:
core/src/main/java/hudson/diagnosis/OldDataMonitor.java
http://jenkins-ci.org/commit/jenkins/108f2c4b23aa0fd4fc8343a446a5de46b7ac87dc
Log:
JENKINS-30139 Add @Restricted to prevent external use of internal data
(cherry picked from commit 9a57858a925aea1a01da9061d60e91e37d319873)
Code changed in jenkins
User: Stephen Connolly
Path:
core/src/main/java/hudson/diagnosis/OldDataMonitor.java
http://jenkins-ci.org/commit/jenkins/52b265b18688ce9142024d1bc2b3b986d9b066f9
Log:
JENKINS-30139 Forgot to change this one
(cherry picked from commit 67cce20291be4d4002d7e293f1e0de6ee60058f3)
Code changed in jenkins
User: Stephen Connolly
Path:
core/src/main/java/hudson/diagnosis/OldDataMonitor.java
http://jenkins-ci.org/commit/jenkins/806f529d8fcd3f91a2fef49c63a2274c8d3f2228
Log:
JENKINS-30139 Oleg wants to keep the data accessible so we have to go for immutable
(cherry picked from commit e9471744338546539ed163d106763be021f278f8)
Compare: https://github.com/jenkinsci/jenkins/compare/f1b47c8a007f...806f529d8fcd
stephenconnolly It's going into 1.625.1. Time to test its RC (tomorrow) or 1.629+ for any old data monitor problems, since this isn't soaked at all.
Integrated in jenkins_main_trunk #4304
JENKINS-30139 Switch from a big fat lock to a concurrent collection (Revision d68bbfcf86531f0b27cc2ba3bf0b8b8666ee4813)
JENKINS-30139 Add @Restricted to prevent external use of internal data (Revision 108f2c4b23aa0fd4fc8343a446a5de46b7ac87dc)
JENKINS-30139 Forgot to change this one (Revision 52b265b18688ce9142024d1bc2b3b986d9b066f9)
JENKINS-30139 Oleg wants to keep the data accessible so we have to go for immutable (Revision 806f529d8fcd3f91a2fef49c63a2274c8d3f2228)
Result = UNSTABLE
ogondza : d68bbfcf86531f0b27cc2ba3bf0b8b8666ee4813
Files :
- core/src/main/java/hudson/diagnosis/OldDataMonitor.java
ogondza : 108f2c4b23aa0fd4fc8343a446a5de46b7ac87dc
Files :
- core/src/main/java/hudson/diagnosis/OldDataMonitor.java
ogondza : 52b265b18688ce9142024d1bc2b3b986d9b066f9
Files :
- core/src/main/java/hudson/diagnosis/OldDataMonitor.java
ogondza : 806f529d8fcd3f91a2fef49c63a2274c8d3f2228
Files :
- core/src/main/java/hudson/diagnosis/OldDataMonitor.java
Code changed in jenkins
User: tfennelly
Path:
changelog.html
cli/pom.xml
core/pom.xml
core/src/main/java/hudson/ExtensionListListener.java
core/src/main/java/hudson/FilePath.java
core/src/main/java/hudson/FileSystemProvisioner.java
core/src/main/java/hudson/FileSystemProvisionerDescriptor.java
core/src/main/java/hudson/Functions.java
core/src/main/java/hudson/PluginManager.java
core/src/main/java/hudson/PluginManagerStaplerOverride.java
core/src/main/java/hudson/PluginWrapper.java
core/src/main/java/hudson/cli/CloneableCLICommand.java
core/src/main/java/hudson/diagnosis/OldDataMonitor.java
core/src/main/java/hudson/model/AbstractProject.java
core/src/main/java/hudson/model/ChoiceParameterDefinition.java
core/src/main/java/hudson/model/Computer.java
core/src/main/java/hudson/model/DownloadService.java
core/src/main/java/hudson/model/Executor.java
core/src/main/java/hudson/model/Items.java
core/src/main/java/hudson/model/Job.java
core/src/main/java/hudson/model/Result.java
core/src/main/java/hudson/model/RunMap.java
core/src/main/java/hudson/model/Slave.java
core/src/main/java/hudson/model/UsageStatistics.java
core/src/main/java/hudson/node_monitors/AbstractNodeMonitorDescriptor.java
core/src/main/java/hudson/node_monitors/DiskSpaceMonitorDescriptor.java
core/src/main/java/hudson/org/apache/tools/tar/TarInputStream.java
core/src/main/java/hudson/org/apache/tools/tar/TarOutputStream.java
core/src/main/java/hudson/os/SU.java
core/src/main/java/hudson/scheduler/CronTab.java
core/src/main/java/hudson/scheduler/CronTabList.java
core/src/main/java/hudson/security/ACL.java
core/src/main/java/hudson/security/SecurityRealm.java
core/src/main/java/hudson/security/csrf/CrumbFilter.java
core/src/main/java/hudson/slaves/NodeProvisioner.java
core/src/main/java/hudson/slaves/SlaveComputer.java
core/src/main/java/hudson/tasks/Maven.java
core/src/main/java/hudson/tools/DownloadFromUrlInstaller.java
core/src/main/java/hudson/triggers/SCMTrigger.java
core/src/main/java/hudson/triggers/TimerTrigger.java
core/src/main/java/hudson/triggers/Trigger.java
core/src/main/java/hudson/util/ChartUtil.java
core/src/main/java/hudson/util/CopyOnWriteList.java
core/src/main/java/hudson/util/DoubleLaunchChecker.java
core/src/main/java/hudson/util/MultipartFormDataParser.java
core/src/main/java/hudson/util/PluginServletFilter.java
core/src/main/java/hudson/util/ProcessKillingVeto.java
core/src/main/java/hudson/util/ProcessTree.java
core/src/main/java/hudson/util/QuotedStringTokenizer.java
core/src/main/java/hudson/util/RobustCollectionConverter.java
core/src/main/java/hudson/util/RobustMapConverter.java
core/src/main/java/hudson/util/RobustReflectionConverter.java
core/src/main/java/hudson/util/SequentialExecutionQueue.java
core/src/main/java/hudson/util/io/TarArchiver.java
core/src/main/java/hudson/util/jna/DotNet.java
core/src/main/java/hudson/util/xstream/ImmutableListConverter.java
core/src/main/java/jenkins/model/BlockedBecauseOfBuildInProgress.java
core/src/main/java/jenkins/model/CauseOfInterruption.java
core/src/main/java/jenkins/model/Jenkins.java
core/src/main/java/jenkins/model/JenkinsLocationConfiguration.java
core/src/main/java/jenkins/model/ParameterizedJobMixIn.java
core/src/main/java/jenkins/model/RunIdMigrator.java
core/src/main/java/jenkins/slaves/restarter/SlaveRestarter.java
core/src/main/java/jenkins/triggers/ReverseBuildTrigger.java
core/src/main/java/jenkins/util/xstream/CriticalXStreamException.java
core/src/main/resources/hudson/model/AbstractBuild/changes.jelly
core/src/main/resources/hudson/model/AbstractBuild/index_pt_BR.properties
core/src/main/resources/hudson/model/AbstractBuild/index_pt_PT.properties
core/src/main/resources/hudson/model/AbstractBuild/sidepanel_pt_PT.properties
core/src/main/resources/hudson/model/AbstractProject/help-assignedLabelString.html
core/src/main/resources/hudson/model/AbstractProject/help-assignedLabelString_zh_TW.html
core/src/main/resources/hudson/model/AbstractProject/help-label.html
core/src/main/resources/hudson/model/AbstractProject/help-label_zh_TW.html
core/src/main/resources/hudson/model/Job/_api.jelly
core/src/main/resources/hudson/model/LoadStatistics/main.properties
core/src/main/resources/hudson/model/Messages.properties
core/src/main/resources/hudson/model/Messages_ca.properties
core/src/main/resources/hudson/model/Messages_da.properties
core/src/main/resources/hudson/model/Messages_de.properties
core/src/main/resources/hudson/model/Messages_es.properties
core/src/main/resources/hudson/model/Messages_fi.properties
core/src/main/resources/hudson/model/Messages_fr.properties
core/src/main/resources/hudson/model/Messages_hu.properties
core/src/main/resources/hudson/model/Messages_it.properties
core/src/main/resources/hudson/model/Messages_ja.properties
core/src/main/resources/hudson/model/Messages_nl.properties
core/src/main/resources/hudson/model/Messages_pt_BR.properties
core/src/main/resources/hudson/model/Messages_ru.properties
core/src/main/resources/hudson/model/Messages_sl.properties
core/src/main/resources/hudson/model/Messages_sv_SE.properties
core/src/main/resources/hudson/model/Messages_tr.properties
core/src/main/resources/hudson/model/Messages_zh_CN.properties
core/src/main/resources/hudson/model/Messages_zh_TW.properties
core/src/main/resources/hudson/node_monitors/DiskSpaceMonitor/column.jelly
core/src/main/resources/hudson/node_monitors/SwapSpaceMonitor/column.jelly
core/src/main/resources/hudson/node_monitors/TemporarySpaceMonitor/column.jelly
core/src/main/resources/hudson/slaves/SlaveComputer/systemInfo.jelly
core/src/main/resources/hudson/tools/InstallSourceProperty/help.html
core/src/main/resources/jenkins/model/CauseOfInterruption/ExceptionInterruption/summary.groovy
core/src/main/resources/jenkins/model/Messages.properties
core/src/main/resources/jenkins/model/Messages_ca.properties
core/src/main/resources/jenkins/model/Messages_da.properties
core/src/main/resources/jenkins/model/Messages_de.properties
core/src/main/resources/jenkins/model/Messages_es.properties
core/src/main/resources/jenkins/model/Messages_fi.properties
core/src/main/resources/jenkins/model/Messages_fr.properties
core/src/main/resources/jenkins/model/Messages_hu.properties
core/src/main/resources/jenkins/model/Messages_it.properties
core/src/main/resources/jenkins/model/Messages_ja.properties
core/src/main/resources/jenkins/model/Messages_nl.properties
core/src/main/resources/jenkins/model/Messages_pt_BR.properties
core/src/main/resources/jenkins/model/Messages_ru.properties
core/src/main/resources/jenkins/model/Messages_sl.properties
core/src/main/resources/jenkins/model/Messages_sv_SE.properties
core/src/main/resources/jenkins/model/Messages_tr.properties
core/src/main/resources/jenkins/model/Messages_zh_CN.properties
core/src/main/resources/jenkins/model/Messages_zh_TW.properties
core/src/main/resources/jenkins/security/s2m/filepath-filter.conf
core/src/main/resources/lib/form/dropdownDescriptorSelector.jelly
core/src/main/resources/lib/hudson/scriptConsole.properties
core/src/main/resources/lib/hudson/scriptConsole_da.properties
core/src/main/resources/lib/hudson/scriptConsole_de.properties
core/src/main/resources/lib/hudson/scriptConsole_es.properties
core/src/main/resources/lib/hudson/scriptConsole_fr.properties
core/src/main/resources/lib/hudson/scriptConsole_ja.properties
core/src/main/resources/lib/hudson/scriptConsole_ko.properties
core/src/main/resources/lib/hudson/scriptConsole_nb_NO.properties
core/src/main/resources/lib/hudson/scriptConsole_nl.properties
core/src/main/resources/lib/hudson/scriptConsole_pl.properties
core/src/main/resources/lib/hudson/scriptConsole_pt_BR.properties
core/src/main/resources/lib/hudson/scriptConsole_ru.properties
core/src/main/resources/lib/hudson/scriptConsole_sv_SE.properties
core/src/main/resources/lib/hudson/scriptConsole_zh_TW.properties
core/src/main/resources/lib/layout/layout.jelly
core/src/site/markdown/index.md
core/src/test/java/hudson/FilePathTest.java
core/src/test/java/hudson/UtilTest.java
core/src/test/java/hudson/model/ItemsTest.java
core/src/test/java/hudson/model/ParametersActionTest.java
core/src/test/java/hudson/triggers/SCMTriggerTest.java
core/src/test/java/hudson/triggers/TimerTriggerTest.java
core/src/test/java/hudson/util/ArgumentListBuilderTest.java
core/src/test/java/hudson/util/MultipartFormDataParserTest.java
core/src/test/java/jenkins/model/RunIdMigratorTest.java
plugins/pom.xml
pom.xml
test/pom.xml
test/src/main/java/com/gargoylesoftware/htmlunit/README.md
test/src/main/java/com/gargoylesoftware/htmlunit/WebClientUtil.java
test/src/main/java/com/gargoylesoftware/htmlunit/WebResponseListener.java
test/src/main/java/com/gargoylesoftware/htmlunit/html/DomNodeUtil.java
test/src/main/java/com/gargoylesoftware/htmlunit/html/HtmlElementUtil.java
test/src/main/java/com/gargoylesoftware/htmlunit/html/HtmlFormUtil.java
test/src/main/java/hudson/core/PluginManagerOverrideTest.java
test/src/main/java/org/jvnet/hudson/test/ExtractResourceSCM.java
test/src/main/java/org/jvnet/hudson/test/HudsonPageCreator.java
test/src/main/java/org/jvnet/hudson/test/HudsonTestCase.java
test/src/main/java/org/jvnet/hudson/test/JenkinsRule.java
test/src/main/java/org/jvnet/hudson/test/junit/FailedTest.java
test/src/main/resources/hudson/core/PluginManagerOverrideTest/BasicPluginManagerOverride/newview.jelly
test/src/test/groovy/hudson/model/AbstractProjectTest.groovy
test/src/test/groovy/hudson/security/TokenBasedRememberMeServices2Test.groovy
test/src/test/groovy/jenkins/bugs/Jenkins19124Test.groovy
test/src/test/java/hudson/ExceptionTest.java
test/src/test/java/hudson/PluginTest.java
test/src/test/java/hudson/bugs/JnlpAccessWithSecuredHudsonTest.java
test/src/test/java/hudson/bugs/LoginRedirectTest.java
test/src/test/java/hudson/cli/ComputerStateTest.java
test/src/test/java/hudson/cli/SetBuildDisplayNameCommandTest.java
test/src/test/java/hudson/console/ConsoleAnnotatorTest.java
test/src/test/java/hudson/diagnosis/ReverseProxySetupMonitorTest.java
test/src/test/java/hudson/diagnosis/TooManyJobsButNoViewTest.java
test/src/test/java/hudson/model/AsynchPeopleTest.java
test/src/test/java/hudson/model/DirectlyModifiableViewTest.java
test/src/test/java/hudson/model/HelpLinkTest.java
test/src/test/java/hudson/model/HudsonTest.java
test/src/test/java/hudson/model/JobQueueTest.java
test/src/test/java/hudson/model/JobTest.java
test/src/test/java/hudson/model/ManagementLinkTest.java
test/src/test/java/hudson/model/MyViewsPropertyTest.java
test/src/test/java/hudson/model/ParametersTest.java
test/src/test/java/hudson/model/ProjectTest.java
test/src/test/java/hudson/model/QueueTest.java
test/src/test/java/hudson/model/SimpleJobTest.java
test/src/test/java/hudson/model/UserTest.java
test/src/test/java/hudson/model/ViewPropertyTest.java
test/src/test/java/hudson/model/ViewTest.java
test/src/test/java/hudson/model/queue/WideExecutionTest.java
test/src/test/java/hudson/search/SearchTest.java
test/src/test/java/hudson/security/LoginTest.java
test/src/test/java/hudson/security/pages/SignupPage.java
test/src/test/java/hudson/slaves/JNLPLauncherTest.java
test/src/test/java/hudson/slaves/NodePropertyTest.java
test/src/test/java/hudson/tools/JDKInstallerTest.java
test/src/test/java/hudson/util/AlternativeUiTextProviderTest.java
test/src/test/java/hudson/util/FormFieldValidatorTest.java
test/src/test/java/hudson/util/ProcessTreeKillerTest.java
test/src/test/java/hudson/util/RobustReflectionConverterTest.java
test/src/test/java/jenkins/model/JenkinsTest.java
test/src/test/java/jenkins/security/ApiTokenPropertyTest.java
test/src/test/java/jenkins/security/BasicHeaderProcessorTest.java
test/src/test/java/jenkins/security/FrameOptionsPageDecoratorTest.java
test/src/test/java/jenkins/security/RekeySecretAdminMonitorTest.java
test/src/test/java/jenkins/security/Security177Test.java
test/src/test/java/jenkins/widgets/BuildListTableTest.java
test/src/test/java/lib/form/AdvancedButtonTest.java
test/src/test/java/lib/form/ExpandableTextboxTest.java
test/src/test/java/lib/form/RepeatableTest.java
test/src/test/java/lib/form/RowSetTest.java
test/src/test/java/lib/form/RowVisibilityGroupTest.java
test/src/test/java/lib/form/ValidateButtonTest.java
test/src/test/java/lib/hudson/ListScmBrowsersTest.java
test/src/test/java/lib/layout/IconTest.java
test/src/test/java/lib/layout/LayoutTest.java
test/src/test/java/lib/layout/RenderOnDemandTest.java
test/src/test/java/lib/layout/TaskTest.java
test/src/test/java/org/jvnet/hudson/main/JenkinsRuleTimeoutTest.java
test/src/test/java/org/jvnet/hudson/main/UseRecipesWithJenkinsRuleTest.java
test/src/test/resources/lib/form/RowSetTest/Subject/test1.jelly
translation-tool.pl
war/pom.xml
war/src/main/webapp/css/style.css
war/src/main/webapp/help/project-config/custom-workspace.html
war/src/main/webapp/scripts/hudson-behavior.js
war/src/main/webapp/scripts/prototype.js
http://jenkins-ci.org/commit/jenkins/a305e3dc93ae087cc367fcda3fde87695322597f
Log:
Merge branch 'master' into JENKINS-26445-pagination-search
- master: (256 commits)
Noting #1817
Noting #1825
updated changelog for release
[maven-release-plugin] prepare for next development iteration
[maven-release-plugin] prepare release jenkins-1.629
JENKINS-30139Oleg wants to keep the data accessible so we have to go for immutable
JENKINS-30139Forgot to change this one
JENKINS-30139Add @Restricted to prevent external use of internal data
JENKINS-30139Switch from a big fat lock to a concurrent collection
JENKINS-30374 Update obsolete help message
updated changelog for release
[maven-release-plugin] prepare for next development iteration
[maven-release-plugin] prepare release jenkins-1.628
noting merge of PR#1816 - use slf4j interceptors
Manage commons-logging and log4j as provided, include slf4j adapters for tests.
Exclude commons-logging and log4j in dangerous scopes compile and runtime in plugins as well.
Only exclude commons-logging and log4j in dangerous scopes compile and runtime.
Reintroduce enforcer rules as suggested by @jtnord.
Document allBuilds for Job remote access API
Include slf4j-jdk14 during tests.
...
Conflicts:
war/src/main/webapp/scripts/hudson-behavior.js
ogonzalez I know this has probably missed the official backporting window for 1.625.1, but it would be great if this could be considered before the RCs are finished?
There are Deadlocks caused by the single-threading from the old code base and this fixes those issue and should be otherwise safe to pick up (but I'd like to see it in a weekly first)