Bug 960166
Summary: | RHQ server-4.7.0-snapshot.zip - unzip with too long paths for windows | ||||||||
---|---|---|---|---|---|---|---|---|---|
Product: | [JBoss] JBoss Operations Network | Reporter: | Armine Hovsepyan <ahovsepy> | ||||||
Component: | Documentation | Assignee: | Deon Ballard <dlackey> | ||||||
Status: | CLOSED CURRENTRELEASE | QA Contact: | Mike Foley <mfoley> | ||||||
Severity: | high | Docs Contact: | |||||||
Priority: | urgent | ||||||||
Version: | JON 3.2 | CC: | ahovsepy, hrupp, jkremser, jshaughn, mfoley, mithomps, vnguyen | ||||||
Target Milestone: | ER03 | ||||||||
Target Release: | JON 3.2.0 | ||||||||
Hardware: | x86_64 | ||||||||
OS: | Windows | ||||||||
Whiteboard: | |||||||||
Fixed In Version: | Doc Type: | Bug Fix | |||||||
Doc Text: | Story Points: | --- | |||||||
Clone Of: | Environment: | ||||||||
Last Closed: | 2014-01-24 17:05:43 UTC | Type: | Bug | ||||||
Regression: | --- | Mount Type: | --- | ||||||
Documentation: | --- | CRM: | |||||||
Verified Versions: | Category: | --- | |||||||
oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |||||||
Cloudforms Team: | --- | Target Upstream Version: | |||||||
Embargoed: | |||||||||
Bug Depends On: | |||||||||
Bug Blocks: | 1006862, 1012435 | ||||||||
Attachments: |
|
We have shortened paths since - can you retry with 4.9 ? Visible for rhq 4.9 build 434b099. Please let me know if there is a newer build with a fix. groovy:000> "C:\\rhq-server-4.7.0-SNAPSHOT\\modules\\org\\rhq\\rhq-enterprise-server-startup-subsystem\\main\\deployments\\rhq.ear\\coregui.war\\WEB-INF\\classes\\org\rhq\\enterprise\\gui\\coregui\\client\\bundle\\deploy\\selection\\SingleCompatibleResourceGroupSelector\$CompatibleResourceGroupsDataSource.class".size() ===> 277 This MSDN article explains about it: http://msdn.microsoft.com/en-us/library/aa365247%28VS.85%29.aspx#maxpath As the 260 chars are including drive letter, :\ and terminating nul, real path entries may only have up to 256 characters. Subtracting at least one character for a directory (where rhq would be 3 chars and JbossON 7 chars), we should not exceed 240 chars for our files. A quick check with a simple tool reveals a good number of entries that are too long (with a warning length of 245, which after removing the "SNAPSHOT" from the base path would be -9 and +2 for .GA ) 238 chars max snert:/im/rhq/etc/zipLengthCheck hrupp$ sh check.sh ../../modules/enterprise/server/appserver/target/rhq-server-4.9.0-SNAPSHOT.zip Long path: 248 : rhq-server-4.9.0-SNAPSHOT/modules/org/rhq/server-startup/main/deployments/rhq.ear/coregui.war/WEB-INF/classes/org/rhq/enterprise/gui/coregui/client/bundle/deploy/selection/PlatformResourceGroupSelector$SelectedPlatformResourceGroupsDataSource.class Long path: 250 : rhq-server-4.9.0-SNAPSHOT/modules/org/rhq/server-startup/main/deployments/rhq.ear/coregui.war/WEB-INF/classes/org/rhq/enterprise/gui/coregui/client/bundle/deploy/selection/SingleCompatibleResourceGroupSelector$CompatibleResourceGroupsDataSource.class Long path: 246 : rhq-server-4.9.0-SNAPSHOT/modules/org/rhq/server-startup/main/deployments/rhq.ear/coregui.war/WEB-INF/classes/org/rhq/enterprise/gui/coregui/client/bundle/deploy/selection/SinglePlatformResourceGroupSelector$PlatformResourceGroupsDataSource.class Long path: 247 : rhq-server-4.9.0-SNAPSHOT/modules/org/rhq/server-startup/main/deployments/rhq.ear/coregui.war/WEB-INF/classes/org/rhq/enterprise/gui/coregui/client/components/measurement/CustomConfigMeasurementRangeEditor$ConfigurationMeasurementPreferences.class Long path: 251 : rhq-server-4.9.0-SNAPSHOT/modules/org/rhq/server-startup/main/deployments/rhq.ear/coregui.war/WEB-INF/classes/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/groups/GroupConfigurationUpdatesPortlet$GroupConfigurationHistoryCriteriaTable.class Long path: 258 : rhq-server-4.9.0-SNAPSHOT/modules/org/rhq/server-startup/main/deployments/rhq.ear/coregui.war/WEB-INF/classes/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/groups/GroupConfigurationUpdatesPortlet$GroupConfigurationUdpatesCriteriaDataSource$1.class Long path: 256 : rhq-server-4.9.0-SNAPSHOT/modules/org/rhq/server-startup/main/deployments/rhq.ear/coregui.war/WEB-INF/classes/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/groups/GroupConfigurationUpdatesPortlet$GroupConfigurationUdpatesCriteriaDataSource.class Long path: 256 : rhq-server-4.9.0-SNAPSHOT/modules/org/rhq/server-startup/main/deployments/rhq.ear/coregui.war/WEB-INF/classes/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/recent/operations/AbstractOperationHistoryPortlet$OperationHistoryPortletDataSource.class Long path: 258 : rhq-server-4.9.0-SNAPSHOT/modules/org/rhq/server-startup/main/deployments/rhq.ear/coregui.war/WEB-INF/classes/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/resource/ResourceConfigurationUpdatesPortlet$ConfigurationUdpatesCriteriaDataSource$1.class Long path: 256 : rhq-server-4.9.0-SNAPSHOT/modules/org/rhq/server-startup/main/deployments/rhq.ear/coregui.war/WEB-INF/classes/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/resource/ResourceConfigurationUpdatesPortlet$ConfigurationUdpatesCriteriaDataSource.class Long path: 260 : rhq-server-4.9.0-SNAPSHOT/modules/org/rhq/server-startup/main/deployments/rhq.ear/coregui.war/WEB-INF/classes/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/resource/ResourceConfigurationUpdatesPortlet$ResourceConfigurationHistoryCriteriaView$1.class Long path: 258 : rhq-server-4.9.0-SNAPSHOT/modules/org/rhq/server-startup/main/deployments/rhq.ear/coregui.war/WEB-INF/classes/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/resource/ResourceConfigurationUpdatesPortlet$ResourceConfigurationHistoryCriteriaView.class Long path: 247 : rhq-server-4.9.0-SNAPSHOT/modules/org/rhq/server-startup/main/deployments/rhq.ear/coregui.war/WEB-INF/classes/org/rhq/enterprise/gui/coregui/client/inventory/common/detail/operation/history/AbstractOperationHistoryDataSource$RequestAttribute.class Long path: 248 : rhq-server-4.9.0-SNAPSHOT/modules/org/rhq/server-startup/main/deployments/rhq.ear/coregui.war/WEB-INF/classes/org/rhq/enterprise/gui/coregui/client/inventory/common/detail/operation/schedule/AbstractOperationScheduleDataSource$RequestProperty.class Long path: 247 : rhq-server-4.9.0-SNAPSHOT/modules/org/rhq/server-startup/main/deployments/rhq.ear/coregui.war/WEB-INF/classes/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/configuration/HistoryGroupResourceConfigurationMembers$MembersTable$1.class Long path: 247 : rhq-server-4.9.0-SNAPSHOT/modules/org/rhq/server-startup/main/deployments/rhq.ear/coregui.war/WEB-INF/classes/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/configuration/HistoryGroupResourceConfigurationMembers$MembersTable$2.class Long path: 247 : rhq-server-4.9.0-SNAPSHOT/modules/org/rhq/server-startup/main/deployments/rhq.ear/coregui.war/WEB-INF/classes/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/configuration/HistoryGroupResourceConfigurationMembers$MembersTable$3.class Long path: 247 : rhq-server-4.9.0-SNAPSHOT/modules/org/rhq/server-startup/main/deployments/rhq.ear/coregui.war/WEB-INF/classes/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/configuration/HistoryGroupResourceConfigurationMembers$MembersTable$4.class Long path: 260 : rhq-server-4.9.0-SNAPSHOT/modules/org/rhq/server-startup/main/deployments/rhq.ear/coregui.war/WEB-INF/classes/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/configuration/HistoryGroupResourceConfigurationMembers$MembersTable$DataSource$1$1.class Long path: 258 : rhq-server-4.9.0-SNAPSHOT/modules/org/rhq/server-startup/main/deployments/rhq.ear/coregui.war/WEB-INF/classes/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/configuration/HistoryGroupResourceConfigurationMembers$MembersTable$DataSource$1.class Long path: 262 : rhq-server-4.9.0-SNAPSHOT/modules/org/rhq/server-startup/main/deployments/rhq.ear/coregui.war/WEB-INF/classes/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/configuration/HistoryGroupResourceConfigurationMembers$MembersTable$DataSource$Field.class Long path: 256 : rhq-server-4.9.0-SNAPSHOT/modules/org/rhq/server-startup/main/deployments/rhq.ear/coregui.war/WEB-INF/classes/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/configuration/HistoryGroupResourceConfigurationMembers$MembersTable$DataSource.class Long path: 254 : rhq-server-4.9.0-SNAPSHOT/modules/org/rhq/server-startup/main/deployments/rhq.ear/coregui.war/WEB-INF/classes/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/inventory/HistoryGroupPluginConfigurationMembers$MembersTable$DataSource$1$1.class Long path: 252 : rhq-server-4.9.0-SNAPSHOT/modules/org/rhq/server-startup/main/deployments/rhq.ear/coregui.war/WEB-INF/classes/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/inventory/HistoryGroupPluginConfigurationMembers$MembersTable$DataSource$1.class Long path: 256 : rhq-server-4.9.0-SNAPSHOT/modules/org/rhq/server-startup/main/deployments/rhq.ear/coregui.war/WEB-INF/classes/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/inventory/HistoryGroupPluginConfigurationMembers$MembersTable$DataSource$Field.class Long path: 250 : rhq-server-4.9.0-SNAPSHOT/modules/org/rhq/server-startup/main/deployments/rhq.ear/coregui.war/WEB-INF/classes/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/inventory/HistoryGroupPluginConfigurationMembers$MembersTable$DataSource.class Long path: 252 : rhq-server-4.9.0-SNAPSHOT/modules/org/rhq/server-startup/main/deployments/rhq.ear/coregui.war/WEB-INF/classes/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/inventory/ResourceGroupResourceSelector$SelectedResourcesAwareDataSource$1.class Long path: 250 : rhq-server-4.9.0-SNAPSHOT/modules/org/rhq/server-startup/main/deployments/rhq.ear/coregui.war/WEB-INF/classes/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/inventory/ResourceGroupResourceSelector$SelectedResourcesAwareDataSource.class Long path: 246 : rhq-server-4.9.0-SNAPSHOT/modules/org/rhq/server-startup/main/deployments/rhq.ear/coregui.war/WEB-INF/classes/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/configuration/AbstractConfigurationHistoryDataSource$CriteriaField.class Long path: 248 : rhq-server-4.9.0-SNAPSHOT/modules/org/rhq/server-startup/main/deployments/rhq.ear/coregui.war/WEB-INF/classes/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/configuration/AbstractConfigurationHistoryDataSource$RequestProperty.class Long path: 246 : rhq-server-4.9.0-SNAPSHOT/modules/org/rhq/server-startup/main/deployments/rhq.ear/coregui.war/WEB-INF/classes/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/operation/history/ResourceOperationHistoryDataSource$CriteriaField.class Long path: 261 : rhq-server-4.9.0-SNAPSHOT/modules/org/rhq/server-startup/main/deployments/rhq.ear/rhq-portal.war/WEB-INF/classes/org/rhq/enterprise/gui/configuration/group/GroupResourceConfigurationHistoryDetailsUIBean$ListGroupResourceConfigurationUpdateDetailsDataModel.class Long path: 248 : rhq-server-4.9.0-SNAPSHOT/modules/org/rhq/server-startup/main/deployments/rhq.ear/rhq-portal.war/WEB-INF/classes/org/rhq/enterprise/gui/configuration/group/GroupResourceConfigurationHistoryUIBean$ListGroupResourceConfigurationUpdatesDataModel.class Long path: 248 : rhq-server-4.9.0-SNAPSHOT/modules/org/rhq/server-startup/main/deployments/rhq.ear/rhq-portal.war/WEB-INF/classes/org/rhq/enterprise/gui/inventory/group/ViewGroupConnectionPropertyDetailsUIBean$ListGroupConnectionPropertyUpdateDetailsDataModel.class Long path: 248 : rhq-server-4.9.0-SNAPSHOT/modules/org/rhq/server-startup/main/deployments/rhq.ear/rhq-portal.war/WEB-INF/classes/org/rhq/enterprise/gui/inventory/group/ViewGroupConnectionPropertyHistoryUIBean$ListGroupConnectionPropertyUpdateHistoryDataModel.class Long path: 253 : rhq-server-4.9.0-SNAPSHOT/modules/org/rhq/server-startup/main/deployments/rhq.ear/rhq-portal.war/WEB-INF/classes/org/rhq/enterprise/gui/measurement/schedule/autogroup/ListAutoGroupMeasurementScheduleUIBean$ListAutoGroupMeasurementScheduleDataModel.class Long path: 257 : rhq-server-4.9.0-SNAPSHOT/modules/org/rhq/server-startup/main/deployments/rhq.ear/rhq-portal.war/WEB-INF/classes/org/rhq/enterprise/gui/measurement/schedule/group/ListResourceGroupMeasurementScheduleUIBean$ListResourceGroupMeasurementScheduleDataModel.class Long path: 250 : rhq-server-4.9.0-SNAPSHOT/modules/org/rhq/server-startup/main/deployments/rhq.ear/rhq-portal.war/WEB-INF/classes/org/rhq/enterprise/gui/measurement/schedule/resource/ListResourceMeasurementScheduleUIBean$ListResourceMeasurementScheduleDataModel.class Long path: 254 : rhq-server-4.9.0-SNAPSHOT/modules/org/rhq/server-startup/main/deployments/rhq.ear/rhq-portal.war/WEB-INF/classes/org/rhq/enterprise/gui/operation/history/group/ResourceGroupOperationCompletedHistoryUIBean$ListGroupOperationCompletedHistoryDataModel.class Long path: 250 : rhq-server-4.9.0-SNAPSHOT/modules/org/rhq/server-startup/main/deployments/rhq.ear/rhq-portal.war/WEB-INF/classes/org/rhq/enterprise/gui/operation/history/group/ResourceGroupOperationHistoryDetailsUIBean$ListGroupOperationHistoryDetailsDataModel.class Long path: 250 : rhq-server-4.9.0-SNAPSHOT/modules/org/rhq/server-startup/main/deployments/rhq.ear/rhq-portal.war/WEB-INF/classes/org/rhq/enterprise/gui/operation/history/group/ResourceGroupOperationPendingHistoryUIBean$ListGroupOperationPendingHistoryDataModel.class Long path: 255 : rhq-server-4.9.0-SNAPSHOT/modules/org/rhq/server-startup/main/deployments/rhq.ear/rhq-portal.war/WEB-INF/classes/org/rhq/enterprise/gui/operation/history/resource/ResourceOperationCompletedHistoryUIBean$ListResourceOperationCompletedHistoryDataModel.class Long path: 251 : rhq-server-4.9.0-SNAPSHOT/modules/org/rhq/server-startup/main/deployments/rhq.ear/rhq-portal.war/WEB-INF/classes/org/rhq/enterprise/gui/operation/history/resource/ResourceOperationPendingHistoryUIBean$ListResourceOperationPendingHistoryDataModel.class [21:47:58] <pilhuhn> You can have a magic prefix "\\?\" to use 32k chars instead of 260 [21:48:36] <pilhuhn> Perhaps 7zip is internally using that prefix as a workaround when laying files down [21:49:58] <gaYak> Possibly [21:51:11] <gaYak> Looks like it according to the 7zip forums Created attachment 798162 [details]
Possible patch created via git diff
We need to make sure that when fixing this, the correct "git mv" commands are issued for renaming the files so that history stays intact. It is ok to put that in ER2 Can't we just instruct people to unzip with 7zip? trying to shorten our paths is likely a losing battle. In corporate environments, people may not be allowed to download 7zip. For the moment this is a one time action (I can update my patch with the latest changes). Also we can just add the zipLengthChecker to the build in a maven exec phase after the zip is built to fail if paths get too long (again) so that we can immediately react on this. Pushed as 0260a015156 to bug/960166 Just FYI: JBoss AS has the same issues with path length. I remember having to use 7zip for JBoss AS on Windows several years ago. We need to be careful to test the resulting version on Windows, as the \\ may take 2 chars, while the Unix / only takes 1 char and may thus give a different result. As I've talked with Jay and we had the email conversation, shortening the coregui / portal.war package names is fine (if that is enough). This is a blocker for Windows 2008 users. Both built-in Explorer unzip and unrar fail. Starting now with package shortening and we'll see how that goes. OK, the following commits drop the max path length to 239 chars for 4.10.0-SNAPSHOT. So, for non-snapshot that ahousl drop to 230 chars. Changes comprise: - package shortening in coregui from: org.rhq.enterprise.gui.coregui... to: org.rhq.coregui... - removal of almost all coregui client-side class files from the war. Only the main entry point and the gwt rpc interfaces remain. Besides being long, they are unnecessary since the client classes are compiled into javascript for runtime. This also reduces the zip size a bit. - classname shortening in portal war, mainly private internal classes - classname shortening in server jar, a single internal class - other odds and ends related to the package shortening commit 980d926ceec3db5ff7ea343487860d22a4036c45 Author: Jay Shaughnessy <jshaughn> Date: Fri Oct 4 19:17:49 2013 -0400 commit 4b107bb225cc645f32f8b9e51b2d0b175fb51c54 Author: Jay Shaughnessy <jshaughn> Date: Fri Oct 4 13:48:01 2013 -0400 commit b6cdc1e407ad4b5eff5be3d258beb7fae9fe8c05 Author: Jay Shaughnessy <jshaughn> Date: Fri Oct 4 13:40:50 2013 -0400 commit efc5e684f4f69574032a42ff4fefc4403b22361e Author: Jay Shaughnessy <jshaughn> Date: Fri Oct 4 13:36:10 2013 -0400 commit ad174b8e2899265c103c477214ac018ebe143551 Author: Jay Shaughnessy <jshaughn> Date: Fri Oct 4 12:15:14 2013 -0400 commit 6b3a687897158166737b66fd8b9e7a48224f8186 Author: Jay Shaughnessy <jshaughn> Date: Fri Oct 4 12:13:30 2013 -0400 commit 04f30136e8ea9757b8580bcc1a697adb4960a95c Author: Jay Shaughnessy <jshaughn> Date: Fri Oct 4 12:10:38 2013 -0400 Moving to ON_QA for testing. 1. No unzip errors when files are extracted to c:\jon-server-3.2.0.ER3 2. Path too long errors with unzip path c:\sandbox\jon-server-3.2.0.ER3 offending files: EditDefinitionControlActionFormPrepareAction EditDefinitionConditionsFormPrepareAction EditDefinitionPropertiesFormPrepareAction MeasurementConverterValidator AvailabilityConverterValidator CallTimeDataConverterValidator ConditionBeanConverterValidator ResourceGroupMetricsTableUIBean GroupDefinitionRecalculationThreadMonitor$ --end of list-- That's strange. The longest path in the zip is 233 characters. I would have thought that would provide 17 characters of prefix wiggle room. I would have thought c:\sandbox would work. I just tried it on Win7 and it did work. Be careful with the Windows "extract all" in the explorer window. By default it will actually repeat the jon-server-3.2.0.ER3 portion if you take the default, because we already include the "jon-server-3.2.0.ER3" directory in the zip. You actually just want to specify the "c:\sandbox" directory as extraction root dir. Maybe that was the problem? "c:\sandbox" + "jon-server-3.2.0.ER3" = 30 chars, which would be too long. Minimally, c:\rhq\ has to work, because we recommend an "rhq" parent directory. In my tests this definitely works, as di the c:\sandbox parent. Ah extra all repeated jon-server-3.2.0.ER3 path! So in my case the errors happened when unzip folder folder = c:\sandbox\jon-server-3.2.0.ER3\jon-server-3.2.0.ER3\<jon files> c:\sandbox\jon-server-3.2.0.ER3\<jon files> works We should add a KB since by default for extract all Windows will suggest c:\Users\Administrator\Downloads\jon-server-3.2.0.ER3 which would be too long. There is a warning in step 4 of the windows setup procedure: https://access.redhat.com/site/documentation/en-US/Red_Hat_JBoss_Operations_Network/3.2/html/Installation_Guide/install-windows-jar.html |
Created attachment 744235 [details] rhq_extract_long_path_error_message.log Description of problem: RHQ server-1.7.0-snapshot.zip - unzip with too long paths for windows Version-Release number of selected component (if applicable): jenkins build 198 How reproducible: always Steps to Reproduce: 1. download rhq-server-4.7.0-snapshot.zip to windows env. 2. extract rhq-server-4-7-0-snapshot.zip in any directory 3. Actual results: Total path and file name length must not exceed 260 characters The system cannot find the path specified. error message present Expected results: zip extracted without error messages Additional info: full log of error messages is attached