+1 On Wed, Jan 11, 2012 at 3:44 PM, Scott Battaglia <scott.battag...@gmail.com>wrote:
> I'm -0.9 on this change. > > I don't think the proposal actually makes managing or understanding the > defaults easier. > > However, if everyone else feels this is the optimal solution, I won't > block it with a -1. > > > > On Wed, Jan 11, 2012 at 3:35 PM, William G. Thompson, Jr. < > wgt...@gmail.com> wrote: > >> I'd like to move forward on this for 3.5 and it seems like we might >> have come to some consensus. I've restated the proposal below with >> the addition of robust sample config in cas.properties. Could I get a >> straw vote (including non-committers) on the following: >> >> CAS Configuration Principles >> * Simple should be easy, complex should be possible >> * Key config should be easily externalized so that a single war file >> can easily be deployed to multiple tiers or nodes >> * Consistent approach >> * Generally seek to limit the number of files that need to be managed >> in the overlay to make upgrading easier. >> >> Approach >> * Push all defaults to the bean files where they are defined inline >> using the Spring 3.x approach and continue to use cas.properties as >> the deployment override file for simple parameter configuration. >> (simple should be easy) >> >> * Continue to use deployerConfigContext for the rest of a typical >> deployer config (simple should be easy) >> >> * Continue the use of bean xml file override for more complex behavior >> configuration (complex is possible) >> >> * Create new property placeholders and defaults for bean properties >> that could benefit from the new approach (e.g. SSO Session timeouts, >> SLO on/off). (minimize the number of files that need to be managed in >> the overlay) >> >> * Move the propertyFileConfigurer configuration block into >> deployConfigContext.xml (minimize config files) >> >> * Provide robust sample config in cas.properties for all of the >> properties that a deployment might want to override in the simple >> case. (consistent approach) >> >> Bill >> >> >> On Tue, Jan 3, 2012 at 5:49 PM, William G. Thompson, Jr. >> <wgt...@gmail.com> wrote: >> > On Tue, Jan 3, 2012 at 4:53 PM, Scott Battaglia >> > <scott.battag...@gmail.com> wrote: >> >>> Spring 3.x approach: >> >> Q: "Hey, there's this placeholder ${ssoSession.maxTimeToLive:3600} in >> >> ticketExpirationPolicies.xml, where's the value for that set?" >> >> A: "Oh look, the default is right there in-line, bet I could override >> >> that in cas.properties!" >> >> >> >> Your Q/A thing highlighted two things for me: >> >> 1. We need better standards for property naming if we really name >> things >> >> without the units (i.e. maxTimeToLiveInSeconds) :-) >> > >> > +1 for well named properties. >> > >> > >> >> 2. Having people read through all the Spring XML files rather than >> >> default.properties to locate the values that can be >> changed/paramaterized >> >> seems like more work for the deployer. I would think properly named >> >> placeholder names all located in one file would provide enough context >> as >> >> well as give us a single point of reference when questions come up. >> Do we >> >> want people to care which XML file the properties are in if they don't >> plan >> >> on overlaying those files? >> > >> > I think the reference issue can be addressed by having robust sample >> > config and explanation right there in cas.properties for all the >> > properties one might want to override (self documenting in a way). As >> > a developer/deployer I'm attracted to the default values set right >> > there in context. >> > >> > On balance both approaches seem to achieve the same results albeit >> > with slightly different qualities. The Spring 3.x approach does it >> > with one less file. Simpler == better? >> > >> > Either way, I think this is an important (thought minor) improvement, >> > and I'm willing to take on this work for 3.5 regardless of which way >> > consensus takes us. >> > >> >> >> >> I think you and I are in agreement though that its time to get it right >> >> (even if we don't completely agree on what "right" is ;-)) >> > >> > Indeed. >> > >> > Bill >> > >> > >> >> >> >> Cheers, >> >> Scott >> >> >> >> >> >> On Tue, Jan 3, 2012 at 4:44 PM, William G. Thompson, Jr. < >> wgt...@gmail.com> >> >> wrote: >> >>> >> >>> What started this discussion was a desired to improve maven overlay >> >>> based CAS deployments for the 3.5 release. The release strategy >> >>> states that in a minor release (i.e. 3.4.x -> CAS 3.5) "CAS maven >> >>> overlays may require minor to moderate changes". So, I tend to want >> >>> to get this right for 3.5 even if it requires some minor to moderate >> >>> changes to existing deployments. >> >>> >> >>> Generally, the first thing I do is externalize cas.properties with the >> >>> goal of having a single war file that can be deployed to multiple >> >>> tiers/nodes without further configuration (i.e. deploy/unpack the war, >> >>> find the right config files, edit/copy the old ones, etc). Having >> >>> some configuration parameters in cas.properties file is great, having >> >>> it in embedded in the war file makes it less convenient for >> >>> single-war-multiple-deployments. >> >>> >> >>> Overtime and many enterprise CAS deployments, I've also noticed that >> >>> logging configuration could also benefit from externalization, which >> >>> gave rise to CAS-1082, subsequent discussions including this one, and >> >>> the discovery that default values for bean configuration could be >> >>> in-lined like so: >> >>> >> >>> <property name="arguments"> >> >>> <list> >> >>> <value>${log4j.config.location:classpath:log4j.xml}</value> >> >>> <value>${log4j.refresh.interval:60000}</value> >> >>> </list> >> >>> </property> >> >>> >> >>> We also have the suggestion by Daniel Frett that a default.properties >> >>> be added and loaded before cas.properties to allow default settings to >> >>> be set for stock CAS and not cause issues for deployers when they >> >>> override cas.properties in their own maven overlay. >> >>> >> >>> I agree with Scott's comments regarding coming up with a general >> >>> strategy going forward (3.5+). So, here's a stab at an approach for >> >>> this minor but helpful improvement. >> >>> >> >>> CAS Configuration should follow the following principles: >> >>> >> >>> * Simple should be easy, complex should be possible >> >>> * Key config should be easily externalized so that a single war file >> >>> can easily be deployed to multiple tiers or nodes >> >>> * Consistent approach >> >>> * Generally seek to limit the number of files that need to be managed >> >>> in the overlay to make upgrading easier. >> >>> >> >>> A possible approach: >> >>> >> >>> * Push all defaults to the bean files where they are defined using the >> >>> Spring 3.x approach above and continue to use cas.properties as the >> >>> deployment override file for simple parameter configuration. Continue >> >>> to use deployerConfigContext for the rest of a typical deployer config >> >>> (simple should be easy) >> >>> >> >>> * Continue the use of bean xml file override for more complex behavior >> >>> configuration (complex is possible) >> >>> >> >>> * Create new property placeholders and defaults for bean properties >> >>> that could benefit from the new approach (e.g. SSO Session timeouts, >> >>> SLO on/off). (minimize the number of files that need to be managed in >> >>> the overlay) >> >>> >> >>> * Move the propertyFileConfigurer configuration block into >> >>> deployConfigContext.xml (minimize the number of files that need to be >> >>> managed in the overlay) >> >>> >> >>> Spring 3.x approach: >> >>> Q: "Hey, there's this placeholder ${ssoSession.maxTimeToLive:3600} in >> >>> ticketExpirationPolicies.xml, where's the value for that set?" >> >>> A: "Oh look, the default is right there in-line, bet I could override >> >>> that in cas.properties!" >> >>> >> >>> Bill >> >>> >> >>> >> >>> On Tue, Jan 3, 2012 at 11:05 AM, Scott Battaglia >> >>> <scott.battag...@gmail.com> wrote: >> >>> > >> >>> > On Tue, Jan 3, 2012 at 10:59 AM, Andrew Petro <ape...@unicon.net> >> wrote: >> >>> >> >> >>> >> I'm ambivalent about the value of this change to introduce an >> >>> >> additional >> >>> >> default.properties to be parsed prior to cas.properties, which >> would >> >>> >> supersede default.properties' values. It feels like it's adding >> >>> >> complexity >> >>> >> without solving a problem worth solving. >> >>> > >> >>> > >> >>> > Minimizing upgrade pain and placing the defaults in a single >> location >> >>> > when >> >>> > we realize something should be paramaterized is not worth solving? >> I'm >> >>> > confused. Especially since not having a mechanism like this in >> place >> >>> > couldn't add parameters except in major releases or if we spread the >> >>> > defaults throughout all the files (a la the Spring 3 syntax) >> >>> > >> >>> > >> >>> > >> >>> > >> >>> > >> >>> > >> >>> >> >> >>> >> >> >>> >> Again, this is: >> >>> >> >> >>> >> https://issues.jasig.org/browse/CAS-1084 >> >>> >> >> >>> >> and >> >>> >> >> >>> >> https://github.com/Jasig/cas/pull/23 >> >>> >> >> >>> >> I'm having trouble empathizing with the problem that this seems to >> be >> >>> >> trying to solve. Updating the cas.properties file on a CAS version >> >>> >> upgrade >> >>> >> seems like a totally reasonable burden on the upgrader. If CAS >> started >> >>> >> configuring TGT timeouts in cas.properties, I wouldn't regard it >> as too >> >>> >> much >> >>> >> to ask *upgrading* CAS adopters to notice the new properties in the >> >>> >> shipping-in-CAS cas.properties and either add these to their >> localized >> >>> >> cas.properties or delete their local cas.properties and re-fork >> from >> >>> >> the new >> >>> >> default. I don't see having to update a local cas.properties that >> >>> >> worked >> >>> >> with version 3.4 of CAS to provide the properties required by 3.5 >> of >> >>> >> CAS as >> >>> >> a problem at all, and I don't value sparing adopters that >> particular >> >>> >> pain on >> >>> >> upgrade. >> >>> >> >> >>> >> This is different from making new deployers set these values when >> they >> >>> >> first deploy CAS, since new deployers when first deploying CAS >> don't >> >>> >> have an >> >>> >> existing cas.properties file that would gum up getting the >> properties >> >>> >> and >> >>> >> values in the cas.properties shipping in CAS. I would have concern >> >>> >> about >> >>> >> CAS shipping with properties files that don't work. That's >> different >> >>> >> from >> >>> >> CAS shipping with a cas.properties that does work but worrying that >> >>> >> some >> >>> >> adopters won't use that working cas.properties. >> >>> >> >> >>> >> In my experience, updating the local cas.properties file on an >> upgrade >> >>> >> to >> >>> >> include added properties just hasn't felt anything like a real >> problem, >> >>> >> just >> >>> >> a reasonable upgrade practices checklist item. On balance, I'd >> >>> >> probably >> >>> >> rather have the fail-init-on-unfulfilled-placeholder behavior than >> the >> >>> >> missing-property-is-masked-by-default.properties behavior. >> >>> >> >> >>> >> >> >>> >> Adding default.properties feels like it's adding some complexity. >> >>> >> >> >>> >> Currently: >> >>> >> >> >>> >> Q: "Hey, there's this placeholder >> >>> >> ${cas.securityContext.casProcessingFilterEntryPoint.loginUrl} in >> >>> >> cas-servlet.xml, where's the value for that set?" >> >>> >> A: In the properties file set in propertyFileConfigurer.xml, which >> by >> >>> >> default is /WEB-INF/cas.properties . >> >>> >> >> >>> >> After this change >> >>> >> >> >>> >> Q: "Hey, there's this placeholder >> >>> >> ${cas.securityContext.casProcessingFilterEntryPoint.loginUrl} in >> >>> >> cas-servlet.xml, where's the value for that set?" >> >>> >> A: Well, it depends. in propertyFileConfigurer.xml, there's a >> list of >> >>> >> properties files, which by default is /WEB-INF/default.properties >> and >> >>> >> /WEB-INF/cas.properties. The last-parsed value wins. So, if this >> >>> >> property >> >>> >> is in cas.properties, that's where it's set. But if it's not in >> >>> >> cas.properties, then it's the value in default.properties. >> >>> >> >> >>> >> >> >>> >> It's not the end of the world, but the latter felt harder to >> explain, >> >>> >> and >> >>> >> the former felt simpler. >> >>> >> >> >>> >> >> >>> >> Currently, if I fat finger a property name in a local >> cas.properties, I >> >>> >> notice. Under the proposed change, the fat fingering is masked by >> a >> >>> >> default >> >>> >> value in default.properties. >> >>> >> >> >>> >> Will CAS upgrading deployers be more grateful that we spared them >> >>> >> having >> >>> >> to update their cas.properties files on upgrades, or will they be >> more >> >>> >> grateful for missing cas.properties properties continuing to fail >> fast? >> >>> >> It's not clear to me that allowing subsets rather than complete >> sets >> >>> >> of >> >>> >> properties in cas.properties files is worth losing the >> >>> >> fail-fast-on-missing-properties feature. Would deployers rather >> have >> >>> >> just >> >>> >> one properties file to worry about, or would they rather have two >> and >> >>> >> understand what it means for properties to be in which and not the >> >>> >> other? >> >>> >> It's not clear to me that the complexity is worth it. >> >>> >> >> >>> >> >> >>> >> I think I'm -0 for this change, but I don't think it's very >> important >> >>> >> and >> >>> >> I'll happily help upgrading adopters to understand the >> >>> >> cascading-properties-files approach if CAS implements it. >> >>> >> >> >>> >> Andrew >> >>> >> >> >>> >> >> >>> >> >> >>> >> >> >>> >> >> >>> >> On Jan 3, 2012, at 8:18 AM, Scott Battaglia wrote: >> >>> >> >> >>> >> > I'm not sure I agree with forcing you to add something. If we've >> >>> >> > moved >> >>> >> > a formerly hard-coded property to now being configurable, you >> >>> >> > shouldn't have >> >>> >> > to do anything. If its a new value, we should have a sensible >> >>> >> > default >> >>> >> > without requiring you to choose one (we don't make people set >> the TGT >> >>> >> > timeouts when they first deploy CAS). >> >>> >> > >> >>> >> > >> >>> >> > On Tue, Jan 3, 2012 at 8:14 AM, Marvin Addison >> >>> >> > <marvin.addi...@gmail.com> wrote: >> >>> >> > I'm really ambivalent about this approach. On the one hand it >> may >> >>> >> > ease the burden of upgrades when new properties are inevitably >> added. >> >>> >> > On the other hand it may facilitate upgrades inheriting >> undesirable >> >>> >> > behavior by default. I personally find it valuable for a deploy >> to >> >>> >> > break due to a new property missing from out custom >> cas.properties >> >>> >> > file, which forces me to review the change and consider whether >> the >> >>> >> > default is in fact desirable. >> >>> >> > >> >>> >> > M >> >>> >> > >> >>> >> > -- >> >>> >> > You are currently subscribed to cas-dev@lists.jasig.org as: >> >>> >> > scott.battag...@gmail.com >> >>> >> > To unsubscribe, change settings or access archives, see >> >>> >> > http://www.ja-sig.org/wiki/display/JSG/cas-dev >> >>> >> > >> >>> >> > -- >> >>> >> > You are currently subscribed to cas-dev@lists.jasig.org as: >> >>> >> > ape...@unicon.net >> >>> >> > To unsubscribe, change settings or access archives, see >> >>> >> > http://www.ja-sig.org/wiki/display/JSG/cas-dev >> >>> >> >> >>> >> >> >>> >> -- >> >>> >> You are currently subscribed to cas-dev@lists.jasig.org as: >> >>> >> scott.battag...@gmail.com >> >>> >> To unsubscribe, change settings or access archives, see >> >>> >> http://www.ja-sig.org/wiki/display/JSG/cas-dev >> >>> >> >> >>> > >> >>> > -- >> >>> > You are currently subscribed to cas-dev@lists.jasig.org as: >> >>> > wgt...@gmail.com >> >>> > To unsubscribe, change settings or access archives, see >> >>> > http://www.ja-sig.org/wiki/display/JSG/cas-dev >> >>> >> >>> -- >> >>> You are currently subscribed to cas-dev@lists.jasig.org as: >> >>> scott.battag...@gmail.com >> >>> To unsubscribe, change settings or access archives, see >> >>> http://www.ja-sig.org/wiki/display/JSG/cas-dev >> >>> >> >> >> >> -- >> >> You are currently subscribed to cas-dev@lists.jasig.org as: >> wgt...@gmail.com >> >> To unsubscribe, change settings or access archives, see >> >> http://www.ja-sig.org/wiki/display/JSG/cas-dev >> >> -- >> You are currently subscribed to cas-dev@lists.jasig.org as: >> scott.battag...@gmail.com >> >> To unsubscribe, change settings or access archives, see >> http://www.ja-sig.org/wiki/display/JSG/cas-dev >> >> > -- > > You are currently subscribed to cas-dev@lists.jasig.org as: > dmitriy.kopyle...@gmail.com > To unsubscribe, change settings or access archives, see > http://www.ja-sig.org/wiki/display/JSG/cas-dev > > -- You are currently subscribed to cas-dev@lists.jasig.org as: arch...@mail-archive.com To unsubscribe, change settings or access archives, see http://www.ja-sig.org/wiki/display/JSG/cas-dev