[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Windows path lengths [was: Re: [virgo-dev] Virgo P2 repository]
- From: Glyn Normington <gnormington@xxxxxxxxxx>
- Date: Mon, 2 Aug 2010 11:53:06 -0700
- Accept-language: en-US
- Acceptlanguage: en-US
- Delivered-to: email@example.com
- Thread-index: Acsyc/O4EtoTnWTCQTmAtZN7wwPi+Q==
- Thread-topic: Windows path lengths [was: Re: [virgo-dev] Virgo P2 repository]
Thanks for that. Here are some things to follow up next. The primary thing is to ascertain the cause of the failure. Once that has been done, some point fixes (since the general fix would probably need to be in Windows) can be proposed.
I would want to be sure that the files below really are the cause of Virgo failing to start. I take it that Virgo started successfully before you scanned its install directory? With a longer install directory, did you see any diagnostics from Virgo (either on the console or in the serviceability/log/log.log file) or Windows which identified any of these files as being a problem? Unless we can determine the actual cause of the problem, we'll be clutching at straws if we try to make point fixes.
Let's suppose for a moment that Virgo did start successfully *and* those classes are actually the crux of the problem. The paths of the 11 classes below comprise two parts:
A. "work\osgi\configuration\org.eclipse.osgi\bundles\nn\data\store\org.eclipse.osgi\bundles\n\n\bundlefile\" which is mostly determined by Equinox.
B. fully-qualified class file, which depends on the package and class name.
As far as A is concerned, it would be work asking on equinox-dev whether there is any way to shorten this. I'm not sure what constraints apply to Equinox, but in the limit it might be possible to differentiate between distinct bundles using a format along the lines of "work\org.eclipse.osgi\b\nn\n\n\" which would save quite a few characters.
As far as B is concerned, it would again be worth asking on equinox-dev whether there is a way to install bundles so that their content is stored in JARs rather than "exploded" directories. If so, loading would probably be slower, but it might be a reasonable option when the alternative is not to be able to use Virgo.
As for the 11 classes listed below, they belong to Spring DM rather than Virgo itself. Virgo will in due course switch to use Gemini Blueprint instead of Spring DM (which was donated to become Gemini Blueprint), so we could consider requesting Gemini Blueprint to re-package to use shorter package names. I gather, although it would be worth confirming this, that the Windows path length limitation does not apply to file names but only to the path minus the file name. If this is true, then renaming classes or changing inner classes to be top-level would not help. Indeed, if this is true, then these 11 classes may be red herrings and other files may actually be preventing Virgo from starting.
Hopefully there are enough questions above to follow up and I'd be grateful if you, or anyone else who is interested, can look into them.
On 2 Aug 2010, at 17:14, Pete Carapetyan wrote:
Glyn and Steve:
On Mon, Aug 2, 2010 at 6:55 AM, Glyn Normington <gnormington@xxxxxxxxxx<mailto:gnormington@xxxxxxxxxx>> wrote:
I'm breaking out a separate thread to highlight and focus on this important issue (and to keep the other thread focussed on p2). The community can help us make some progress.
What follows may exhibit incorrect logic, but here is what I was able to deduce by running a very simple groovy script against the install directory of M1, checking the absolute path length for every class file
* that wasn't in a jar
* that didn't leave me a fairly generous [35, 45, 55] characters for an install directory.
For each of these settings, here was the offender count, virtually all were inner classes.
* if 35 character install directory: 11 classes run over (all shown below)
* if 45 character install directory: 23 classes run over (I could furnish list if requested)
* if 55 character install directory: 58 classes run over (I could furnish list if requested)
Naming of classes can be a very personal issue, so I would not suggest that these offending inner classes should simply be renamed to a shorter name, as I am not a Virgo developer. But if such was politically feasible, this bug might be easy to fix - if my logic is not faulty somewhere.
Hope this helps.
229 = LENGTH WITHOUT INSTALL PATH for: C:\dev\virgo-kernel-2.1.0.M01\work\osgi\configuration\org.eclipse.osgi\bundles\37\data\store\org.eclipse.osgi\bundles\4\1\bundlefile\org\springframework\osgi\context\support\AbstractDelegatedExecutionApplicationContext$NoDependenciesWaitRefreshExecutor.class
223 = LENGTH WITHOUT INSTALL PATH for: C:\dev\virgo-kernel-2.1.0.M01\work\osgi\configuration\org.eclipse.osgi\bundles\37\data\store\org.eclipse.osgi\bundles\4\1\bundlefile\org\springframework\osgi\service\dependency\internal\DefaultMandatoryDependencyManager$ImporterDependencyListener.class
223 = LENGTH WITHOUT INSTALL PATH for: C:\dev\virgo-kernel-2.1.0.M01\work\osgi\configuration\org.eclipse.osgi\bundles\37\data\store\org.eclipse.osgi\bundles\4\1\bundlefile\org\springframework\osgi\service\importer\support\internal\aop\ServiceDynamicInterceptor$EventSenderRetryTemplate.class
231 = LENGTH WITHOUT INSTALL PATH for: C:\dev\virgo-kernel-2.1.0.M01\work\osgi\configuration\org.eclipse.osgi\bundles\37\data\store\org.eclipse.osgi\bundles\4\1\bundlefile\org\springframework\osgi\service\importer\support\internal\aop\ServiceProviderTCCLInterceptor$ServiceProviderTCCLListener.class
221 = LENGTH WITHOUT INSTALL PATH for: C:\dev\virgo-kernel-2.1.0.M01\work\osgi\configuration\org.eclipse.osgi\bundles\37\data\store\org.eclipse.osgi\bundles\4\1\bundlefile\org\springframework\osgi\service\importer\support\internal\collection\OsgiServiceCollection$OsgiServiceIterator.class
243 = LENGTH WITHOUT INSTALL PATH for: C:\dev\virgo-kernel-2.1.0.M01\work\osgi\configuration\org.eclipse.osgi\bundles\37\data\store\org.eclipse.osgi\bundles\5\1\bundlefile\org\springframework\osgi\extender\internal\dependencies\shutdown\ComparatorServiceDependencySorter$TarganStronglyConnectedSorter$Node.class
238 = LENGTH WITHOUT INSTALL PATH for: C:\dev\virgo-kernel-2.1.0.M01\work\osgi\configuration\org.eclipse.osgi\bundles\37\data\store\org.eclipse.osgi\bundles\5\1\bundlefile\org\springframework\osgi\extender\internal\dependencies\shutdown\ComparatorServiceDependencySorter$TarganStronglyConnectedSorter.class
224 = LENGTH WITHOUT INSTALL PATH for: C:\dev\virgo-kernel-2.1.0.M01\work\osgi\configuration\org.eclipse.osgi\bundles\37\data\store\org.eclipse.osgi\bundles\5\1\bundlefile\org\springframework\osgi\extender\internal\dependencies\startup\DependencyServiceManager$DependencyServiceListener.class
236 = LENGTH WITHOUT INSTALL PATH for: C:\dev\virgo-kernel-2.1.0.M01\work\osgi\configuration\org.eclipse.osgi\bundles\37\data\store\org.eclipse.osgi\bundles\5\1\bundlefile\org\springframework\osgi\extender\internal\dependencies\startup\DependencyWaiterApplicationContextExecutor$CompleteRefreshTask.class
229 = LENGTH WITHOUT INSTALL PATH for: C:\dev\virgo-kernel-2.1.0.M01\work\osgi\configuration\org.eclipse.osgi\bundles\37\data\store\org.eclipse.osgi\bundles\5\1\bundlefile\org\springframework\osgi\extender\internal\dependencies\startup\DependencyWaiterApplicationContextExecutor$WatchDogTask.class