Commit Graph
100 Commits
Author SHA1 Message Date
Renaud Paquay d6748006a6 Added tag 1.2 for changeset 2ca8b2e7914c 2011-06-13 12:35:05 -07:00
Renaud Paquay c258f1ec58 Set build version (1.2.41) for v1.2. 2011-06-13 12:34:42 -07:00
Renaud Paquay 03005603e7 Merge integration => default 2011-06-13 12:33:03 -07:00
Renaud Paquay fcc36c10ae Merge 1.x => integration
--HG--
branch : integration
2011-06-13 12:32:07 -07:00
Renaud Paquay ab13087349 Added tag 1.2 for changeset e1ec47d08d85 2011-06-10 18:55:57 -07:00
Renaud Paquay 835d1fd3ae Set version 2011-06-10 18:55:06 -07:00
Renaud Paquay 0bc2d36d58 Merge integration => default 2011-06-10 18:47:42 -07:00
Renaud Paquay d955399702 Merge 1.x => integration
--HG--
branch : integration
2011-06-09 22:26:49 -07:00
Renaud Paquay 227711cf20 Fixing typo
--HG--
branch : 1.x
2011-06-09 22:10:29 -07:00
Renaud Paquay 4c44f51988 Merge
--HG--
branch : 1.x
2011-06-09 13:59:10 -07:00
Renaud Paquay aec045e77c Merge
--HG--
branch : 1.x
2011-06-09 12:54:17 -07:00
Renaud Paquay e4e359e5c1 #17923: Modules from ~/Bin and ~/Core have higher priority
Because of the way ASP.NET BuildManager works(*), we can't enable
dynamic compilation of a module if the module is already
present in ~/bin.

(*) When invoking the compiler, BuildManager automatically adds
references to all assemblies present in ~/bin. So, if you have module
"X" in "~/bin", there is no way to enable dynamic compilation of
module "X" by compiling "X.csproj", as there will be tons of
compilation errors with equivalent types defined in multiple
assemblies.

--HG--
branch : 1.x
2011-06-09 12:53:33 -07:00
Renaud Paquay 5a4f0ed1f3 Merge
--HG--
branch : 1.x
2011-06-09 09:18:26 -07:00
Renaud Paquay 340c2bdbc2 #17728: Workaround asp.net bug loading incorrect version of System.
Some of our assemblies in "~/bin" reference "System, Version=2.0.0.0".
During the first time site compilation in the command line scenario,
asp.net will sometimes decide to load that version of the assembly
from disk (from the GAC), even though the application is configured
to run on .NET 4.0. The workaround is to remove a couple of web.config
elements, so that ASP.NET will load the correct version of those
assemblies at startup.

Work Item: 17728

--HG--
branch : 1.x
2011-06-09 09:07:41 -07:00
Renaud Paquay 3bcbcb4f04 #17920: Fix multi-threading issue
Work Item: 17920

--HG--
branch : 1.x
2011-06-09 08:38:16 -07:00
Renaud Paquay 5549d0dfe5 Merge 1.x => integration
--HG--
branch : integration
2011-06-06 11:53:01 -07:00
Renaud Paquay 88174a2b9b Merge 1.x => integration
--HG--
branch : integration
2011-06-04 14:03:26 -07:00
Renaud Paquay 2396b57d4e Merge
--HG--
branch : 1.x
2011-06-03 17:41:23 -07:00
Renaud Paquay 44800c2b00 #17773: bug fix
Work Item: 17773

--HG--
branch : 1.x
2011-06-03 17:34:38 -07:00
Renaud Paquay 886d3454d4 Fix UTs
--HG--
branch : 1.x
2011-06-03 00:34:58 -07:00
Renaud Paquay c20d722ee9 Allow disabling parallel behavior through HostComponents.config
Safety net...

--HG--
branch : 1.x
2011-06-02 17:23:14 -07:00
Renaud Paquay 1d5fd306b9 Merge
--HG--
branch : 1.x
2011-06-02 17:14:47 -07:00
Renaud Paquay f0f7100837 #17901: Missing attribute value
Work Item: 17901

--HG--
branch : 1.x
2011-06-02 17:13:08 -07:00
Renaud Paquay ea11dbf606 PERF: Collect extension modification dates in parallel
Lots of file I/O, runs faster in parallel.

--HG--
branch : 1.x
2011-06-02 10:35:05 -07:00
Renaud Paquay 53f84b3cbc PERF: Compact list of tokens for cache entries
Due to the way we nest cache context implicitly, there were cases
where we had 1,500+ tokens with only 200+ unique ones.

We now call "distinct" on the tokens when after an entry is created.
This decreases memory usage and also improve performance on cache
hits (fewer tokens to go though each time).

--HG--
branch : 1.x
2011-06-02 10:34:01 -07:00
Renaud Paquay 2a43983151 PERF: Build shape table in parallel
We have lots of file I/O to scan directories for templates,
so it was a good candidate to run in parallel.

--HG--
branch : 1.x
2011-06-02 10:31:46 -07:00
Renaud Paquay 43b3d45348 Merge
--HG--
branch : 1.x
2011-06-01 14:39:17 -07:00
Renaud Paquay dda45b654e PERF: Revert previous change.
Using file system directly is 4x times faster.

--HG--
branch : 1.x
2011-06-01 14:38:55 -07:00
Renaud Paquay a721f20802 Remove extra ";"
--HG--
branch : 1.x
2011-06-01 11:59:18 -07:00
Renaud Paquay 1c400dbd69 Merge
--HG--
branch : 1.x
2011-06-01 11:09:45 -07:00
Renaud Paquay 4daaeb0b40 Removed unused dependency
--HG--
branch : 1.x
2011-05-31 20:57:54 -07:00
Renaud Paquay 3ac3aead61 Use supported VPP api to retrieve modification date
--HG--
branch : 1.x
2011-05-31 19:19:07 -07:00
Renaud Paquay 1bb16a470c Load features in parallel.
--HG--
branch : 1.x
2011-05-31 18:24:18 -07:00
Renaud Paquay df9abf1cc0 Load references of dependencies in parallel.
--HG--
branch : 1.x
2011-05-31 18:23:29 -07:00
Renaud Paquay 4c2785024c Ensure task result are returned ordered
This is to avoid a potentially un-wanted side-effect of having
an enumeration returned in a different order when executed
in parallel.

--HG--
branch : 1.x
2011-05-31 18:22:47 -07:00
Renaud Paquay 5f04d394c4 Minor cleanup
--HG--
branch : 1.x
2011-05-31 18:21:41 -07:00
Renaud Paquay f04e67d151 PERF: Extension loader probing performed in parallel
--HG--
branch : 1.x
2011-05-30 22:55:44 -07:00
Renaud Paquay 7122000ae0 Refactor cache context to support correct parallel execution
We need a new service, IParallelCacheContext, which allows
tracking the current cache context across threads and tasks
running in the thread pool.

--HG--
branch : 1.x
2011-05-30 22:31:27 -07:00
Renaud Paquay 1c16b10aa0 Run extension harvesting code in parallel task
Extension harvesting is a mix of independent operations requiring
file i/o and cpu usage, so they are good candidate for
parellelization.

Also make module harvesting in ~/Core a separate folder instance.

--HG--
branch : 1.x
2011-05-30 17:37:51 -07:00
Renaud Paquay 750493c447 Abstract away cache context
This is needed to support proper behavior of cache context
when executing tasks in parallel.

--HG--
branch : 1.x
2011-05-30 17:33:59 -07:00
Renaud Paquay 3ca3234bbf Refactor extension folder harvesting
Use composition over inheritance. This will be useful later to
improve performance of module/theme manifest harvesting.

--HG--
branch : 1.x
rename : src/Orchard/Environment/Extensions/Folders/ExtensionFolders.cs => src/Orchard/Environment/Extensions/Folders/ExtensionHarvester.cs
2011-05-30 14:17:06 -07:00
Renaud Paquay 48a48e4cfe PERF: Don't look for themes in "~/Core".
It's not supported, hence it's unecessary disk I/O.

--HG--
branch : 1.x
2011-05-30 12:12:00 -07:00
Renaud Paquay d6e4297c91 Merge
--HG--
branch : 1.x
2011-05-30 00:01:01 -07:00
Renaud Paquay 1fd64b705d PERF: Move async token monitoring to a service interface
Update UT

--HG--
branch : 1.x
2011-05-29 13:58:06 -07:00
Renaud Paquay 234375704a Fix bug in hashing algorithm
As per .NET guidelines and implementation details, can't use
string.GetHashCode() to persist string hash code values on disk.

--HG--
branch : 1.x
2011-05-29 13:08:38 -07:00
Renaud Paquay a281658f9a Minor code refactoring
Spmplify/relayer things a little bit

--HG--
branch : 1.x
2011-05-29 02:42:57 -07:00
Renaud Paquay 933b625bf0 PERF: Re-use cached filehash for dynamic module hash
Before recompiling a dynamic module (.csproj), the BuildManager
verifies that the file hash (returned from the VPP) has changed
from the previous compilation. Instead of returning of the file
hash of the .csproj file and all its virtual dependencies (source
files and references), use the file hash value stored in the file
managed by IExtensionDependenciesManager.

This improves startup time by 10+ seconds on file i/o bound machines.

--HG--
branch : 1.x
2011-05-28 22:16:14 -07:00
Renaud Paquay 21f1658f48 PERF: During startup, re-use the retrieve file modification dates
to compute the file hash to store into the ExtensionDependencies
file. This allows skipping doing additional file I/O on dynamic
modules when they are activated.

--HG--
branch : 1.x
2011-05-28 21:01:39 -07:00
Renaud Paquay b97c0f0666 Rename class to be more consistent with similar components
--HG--
branch : 1.x
rename : src/Orchard/FileSystems/Dependencies/DefaultModuleDependenciesManager.cs => src/Orchard/FileSystems/Dependencies/DefaultExtensionDependenciesManager.cs
rename : src/Orchard/FileSystems/Dependencies/IModuleDependenciesManager.cs => src/Orchard/FileSystems/Dependencies/IExtensionDependenciesManager.cs
2011-05-28 20:45:51 -07:00
Renaud Paquay ec7e44db4f Move last write time computation out of loaders
Loaders should only know about dependencies, not about modification
dates. This will help centralizing and abstracting away (for
performance reason) the algorithm used to pick the correct
module to activate (according to last modification dates).

--HG--
branch : 1.x
2011-05-28 20:44:46 -07:00
Renaud Paquay 23afea8a0e PERF: Monitor modules files asynchronously
Monitoring virtual dependency files for modules takes requires a lot
of file I/O, and can be a significant bottleneck on heavily loaded
disk sub-system (5-10 secs). Making this process asynchronous during
startup decreases startup time by almost that amount of time.

--HG--
branch : 1.x
2011-05-28 19:05:52 -07:00
Renaud Paquay 7a35d03902 PERF: Adding various logging calls related to startup performance
--HG--
branch : 1.x
2011-05-27 14:19:46 -07:00
Renaud Paquay fdbe7fd454 Fixing UT
--HG--
branch : 1.x
2011-05-27 14:19:23 -07:00
Renaud Paquay e806b8a1f3 PERF: Adding various logging calls related to startup performance
--HG--
branch : 1.x
2011-05-27 10:58:37 -07:00
Renaud Paquay 8e83faa224 PERF: Adding various logging calls related to startup performance
--HG--
branch : 1.x
extra : transplant_source : %DC%AB%0E%89%B4%01%20%17%29%87%0F%D86%3A%FE%EE%A2%FB%D9%94
2011-05-23 17:46:46 -07:00
Renaud Paquay 2922ede0d5 Refactor WarmupHttpModule use of AsyncResult
If processing the request immediately, use a dedicated
"DoneAsyncResult" class to avoid waiting on a handle.

Also make sure that we return false from "CompletedSynchronously" only
when in "Warmup" mode.

--HG--
branch : 1.x
2011-05-27 10:50:58 -07:00
Renaud Paquay 8fc1b4d707 Refactoring: moving code out of WarmupHttpModule class
--HG--
branch : 1.x
extra : transplant_source : %86%0A%26%0DP%29e%99%0E%87%5D%F5%7E%F5X%C0i%9E%2C%01
2011-05-17 13:04:51 -07:00
Renaud Paquay b01a0898a9 Refactor Orchard.WarmupStarter assembly
* Remove dependency on Orchard.Framework assembly
* Fix issue where a host initialization failure would result in
  '404' errors. We need to restart the host initialization and
  make sure new incoming requests are queued.
* Fix concurrency issue when multiple requests are pending for the
  host initialization to finish (only one request would notify
  of a potentially error, the other ones would return a '404').

--HG--
branch : 1.x
extra : transplant_source : %3Dz%E4%ADEq%91%9D%17%D2%10jut%A6%93%09t%7CR
2011-05-17 13:01:39 -07:00
Renaud Paquay c51f4ce2de PERF: Adding more logging calls related to performance tracking
Also added a few "Disabled" checks in extension loaders to avoid
extra-work when they are disabled.

--HG--
branch : 1.x
2011-05-27 10:45:28 -07:00
Renaud Paquay 852d21fee9 Fix incorrect condition
--HG--
branch : 1.x
2011-05-26 20:41:02 -07:00
Renaud Paquay 7084ecbbbc #17804: Ensure views are recompiled more aggressively
When a module changes, it's loader can change, which means the list
of dependencies can change to. Instead of trying to track the list
of dependencies, we now simply add a dependency on a file on disk
which describe the module compilation state.

As an aside, this also improves startup performance when
there were no changes to a site, since asp.net now only has
to check a single file instead of the list of dependencies.

--HG--
branch : 1.x
2011-05-26 18:11:51 -07:00
Renaud Paquay 1a30d2492f Refactor interaction between Dynamic loader and Dynamic VPP
--HG--
branch : 1.x
2011-05-26 16:40:05 -07:00
Renaud Paquay 6889ba4328 Perf: Include references from module project files only
In particular, files from ~/Core should not be included in
the list of dependencies, are Orchard.Core.dll is assumed to be
in "~/bin", so any change to it will force a whole site recompilation
anyways.

--HG--
branch : 1.x
2011-05-26 16:28:28 -07:00
Renaud Paquay 7a4e86e6a5 Virtual paths are case insensitive.
--HG--
branch : 1.x
2011-05-26 11:06:20 -07:00
Renaud Paquay 6c732af595 Implement dependency files storing state of modules compilation
The file is similar to "dependencies.xml", except it contains file
hash of all virtual path stored in the file. This is to ensure that
the file content is updated when any file hash changes.

This will be used in an upcoming bug fix.

--HG--
branch : 1.x
2011-05-26 11:05:50 -07:00
Renaud Paquay b20b68c9fd Expose GetFileHash method on IVirtualPathProvider
--HG--
branch : 1.x
2011-05-25 21:35:37 -07:00
Renaud Paquay 314c9cb9a6 Refactoring a couple of method related to dynamic compilation
Abstract away WebForms syntax knowledge from extension loader
implementations.

Rename the corresponding methods to be more semantically correct.

--HG--
branch : 1.x
2011-05-25 20:56:02 -07:00
Renaud Paquay 6d0b7e1d61 Removing method from interface
The method really only makes sense for the DynamicExtensionLoader.
It is used only in the DynamicModuleVirtualPathProvider only.

--HG--
branch : 1.x
2011-05-25 19:49:08 -07:00
Renaud Paquay 72e787ed38 Renaming method
--HG--
branch : 1.x
2011-05-25 19:36:19 -07:00
Renaud Paquay 56284c516a Fix typo
--HG--
branch : 1.x
2011-05-25 18:10:51 -07:00
Renaud Paquay 6de0700f3e Merge
--HG--
branch : 1.x
2011-05-25 17:47:02 -07:00
Renaud Paquay 0ac6091b74 17875: Too many InvalidOperationExceptions during startup
Prevent common cases exception by explicitly rejecting invalid
virtual paths.

--HG--
branch : 1.x
2011-05-25 17:36:27 -07:00
Renaud Paquay eb88b28443 PERF: Decrease # of virtual path dependencies for Razor views
Lots of duplicate virtual paths were added, as they came from
different sources.

--HG--
branch : 1.x
2011-05-25 13:28:47 -07:00
Renaud Paquay f7e2804363 #17869: Fix medium trust issue
"Assembly.Location" propery is not allowed in medium trust.
Use the virtual path of the assembly file instead.

Work Item: 17869

--HG--
branch : 1.x
2011-05-25 12:05:47 -07:00
Renaud Paquay 27503d8d1b #17850: Include and enable Orchard.Warmup by default
Also update blog and default recipe to set the site base url
during setup using the current request information.

Work Item: 17850

--HG--
branch : 1.x
2011-05-25 11:59:13 -07:00
Renaud Paquay 73c4f84636 #17855: Remove explicit medium trust element from web.config
Work Items: 17855

--HG--
branch : 1.x
2011-05-24 19:52:07 -07:00
Renaud Paquay 846a40a1fe Update version to generic 1.2.0
--HG--
branch : 1.x
2011-05-24 19:49:58 -07:00
Renaud Paquay 8e8b919dfe Merge
--HG--
branch : 1.x
2011-05-12 22:03:39 -07:00
Renaud Paquay ad01bc5dcb Consistency in log level
--HG--
branch : 1.x
2011-05-12 22:03:14 -07:00
Renaud Paquay 10eb02d887 Merge
--HG--
branch : 1.x
2011-05-12 10:50:04 -07:00
Renaud Paquay 130f9d3c80 PERF: Adding various logging calls related to startup performance
--HG--
branch : 1.x
2011-05-12 10:47:08 -07:00
Renaud Paquay 03ddb80526 PERF: Cache result of parsing .csproj files
--HG--
branch : 1.x
extra : transplant_source : %02%96%9A%B7%91%05%E1%1EF%03%5D%5C%EB%A0%95Q%13%F6B%9C
2011-05-09 11:03:20 -07:00
Renaud Paquay 0b4bf6276d PERF: Improve performance of DefaultVirtualPathMonitor
Decrease constant cost of implementation:

* Don't check for file/directory existence. It is much more
  expensive to systematically check for file existence through the
  VPP than catching the occasional exception.

* Don't eagerly create ASP.NET cache entries when there are
  already existing entries. This is so if there are multiple calls
  for the same virtual path, we don't end up calling an expensive
  API when there is no need.

--HG--
branch : 1.x
extra : transplant_source : %C8%C3t%5C%B3%DA%C4%98%E8%13%23%D1B%91%AF2%B7%01%E7%CE
2011-05-04 17:48:37 -07:00
Renaud Paquay 8e7550cda9 PERF: Use app relative virtual path for file monitoring
This is so that the IVirtualPathMonitor implementation can
properly cache virtual paths in a single entry. This decreases
the number of entries by one or two order of magnitude when
complex solutions are loaded (i.e. modules with lot of references
to other modules).

--HG--
branch : 1.x
extra : transplant_source : %11%21n%FA%5Dy%E9%83%E3%86%86%D0%8Ba%FF%98%5C%8D/%22
2011-05-01 12:44:42 -07:00
Renaud Paquay 0dabbb5322 PERF: Don't monitor files if component have been disabled
--HG--
branch : 1.x
extra : transplant_source : %7D%07%23%F0%0ED%E7%B6%00%BA%DA%5C%CBv%24z%07%1B%F2%B6
2011-04-30 19:50:32 -07:00
Renaud Paquay 63e2c3475f Don't lose exception callstack if error during startup
--HG--
branch : 1.x
extra : transplant_source : %B6%B7%FDp%C1%16G%D4%16%9E%F7%85%99%E50%B9%F8%0C%CC%D1
2011-04-30 19:47:29 -07:00
Renaud Paquay 2687655e93 Added tag 1.1 for changeset 97186e9f4536 2011-04-10 18:57:29 -07:00
Renaud Paquay 8efb9a4145 Merge 1.x -> default 2011-04-10 18:57:12 -07:00
Renaud Paquay 71254bac95 Set build version (1.1.30) for v1.1. 2011-04-10 18:53:43 -07:00
Renaud Paquay 71978e3e37 Fix Logger and Localizer properties to be public
If they are not public, they are not injected (no private
reflection in Medium Trust)

--HG--
branch : 1.x
2011-04-10 18:37:31 -07:00
Renaud Paquay ee1a96ec99 Last minute bug fix with recipes execution
Work Item: 17465

--HG--
branch : 1.x
2011-04-10 18:31:22 -07:00
Renaud Paquay 2962ba675d Added tag 1.1 for changeset 48aedbdcebb1 2011-04-09 10:50:47 -07:00
Renaud Paquay 8fe03f6f32 Set build version (1.1.29) for v1.1. 2011-04-09 10:50:24 -07:00
Renaud Paquay 98091b23f9 Merge 1.x -> default 2011-04-09 10:46:52 -07:00
Renaud Paquay 8616f7a2e2 Don't exclude Recipes and MediaPicker from default modules
--HG--
branch : 1.x
2011-04-09 09:34:29 -07:00
Renaud Paquay e39a034091 Merge
--HG--
branch : 1.x
2011-04-08 11:50:25 -07:00
Renaud Paquay db3046f68f Fix 1.0 to 1.1 migration issue
SiteSettings are used very early and often in Orchard, so we
can't rely on having the user be able to run migration for
SiteSettings. The workaround for 1.1 is to move the changes
we did to SiteSettings into a new SiteSettings2 Part/Record.

With this change, database compatiblity from 1.0 and 1.1 seems
to be in a good working state on a real blog site.

--HG--
branch : 1.x
2011-04-07 18:29:23 -07:00
Renaud Paquay eed2900b43 Merge dev => integration
End of Iteration #1 of v1.1

--HG--
branch : integration
2011-03-01 16:09:09 -08:00
Renaud Paquay 21a5a30ca2 Bug fix
--HG--
branch : dev
2011-02-24 16:16:08 -08:00
Renaud Paquay 6dffcfed8c Add missing project to Azure solution
--HG--
branch : dev
extra : transplant_source : %B5L%AB%19%EE%40%CE%27n%10.%DD%94s%93%19%09l%01u
2011-02-24 14:53:25 -08:00