Well. You don't really think I HAVE a solr installation, do you Walter? ;-)
No you're right. The pattern I put out was general. It depends on the schema change doesn't it? -----Original Message----- From: Walter Underwood [mailto:wun...@wunderwood.org] Sent: Saturday, November 01, 2014 11:42 PM To: solr-user@lucene.apache.org Subject: Re: How to update SOLR schema from continuous integration environment You do that with schema changes and I'll watch your site crash. wunder Walter Underwood wun...@wunderwood.org http://observer.wunderwood.org/ On Nov 1, 2014, at 8:31 PM, Will Martin <wmartin...@gmail.com> wrote: > Well yes. But since there hasn't been any devops approaches yet, we > really aren't talking about Continuous Delivery. Continually > delivering builds into production is old hat and Jack nailed the > canonical manners in which it has been done. It really depends on > whether an org is investing in the full Agile lifecycle. A piece at a time is common,. > > One possible devop approach: > > Once you get near full test automation > : Jenkins builds the target > : chef does due diligence on dependencies > : chef pulls the build over. > : chef configures the build once it is installed. > :chef takes the machine out of the load-balancers rotation > : chef puts the machine back in once it is launched and sanity tested > (by chef). > > <or puppet or any others I'm not familiar with> > > > If you substitute Jack's plan, you get pretty much the same thing; > except that by using devops tools you introduce a little thing called idempotency. > > > > -----Original Message----- > From: Walter Underwood [mailto:wun...@wunderwood.org] > Sent: Saturday, November 01, 2014 12:25 PM > To: solr-user@lucene.apache.org > Subject: Re: How to update SOLR schema from continuous integration > environment > > Nice pictures, but that preso does not even begin to answer the question. > > With master/slave replication, I do schema migration in two ways, > depending on whether a field is added or removed. > > Adding a field: > > 1. Update the schema on the slaves. A defined field with no data is > not a problem. > 2. Update the master. > 3. Reindex to populate the field and wait for replication. > 4. Update the request handlers or clients to use the new field. > > Removing a field is the opposite. I haven't tried lately, but Solr > used to have problems with a field that was in the index but not in the schema. > > 1. Update the request handlers and clients to stop using the field. > 2. Reindex without any data for the field that will be removed, wait > for replication. > 3. Update the schema on the master and slaves. > > I have not tried to automate this for continuous deployment. It isn't > a big deal for a single server test environment. It is the prod > deployment that is tricky. > > wunder > Walter Underwood > wun...@wunderwood.org > http://observer.wunderwood.org/ > > > On Nov 1, 2014, at 7:29 AM, Will Martin <wmartin...@gmail.com> wrote: > >> > http://www.thoughtworks.com/insights/blog/enabling-continuous-delivery > -enter > prises-testing >> >> >> -----Original Message----- >> From: Jack Krupansky [mailto:j...@basetechnology.com] >> Sent: Saturday, November 01, 2014 9:46 AM >> To: solr-user@lucene.apache.org >> Subject: Re: How to update SOLR schema from continuous integration > environment >> >> In all honesty, incrementally updating resources of a production >> server is > a rather frightening proposition. Parallel testing is always a better > way to go - bring up any changes in a parallel system for testing and > then do an atomic "swap" - redirection of requests from the old server > to the new server and then retire the old server only after the new > server has had enough time to burn in and get past any infant mortality problems. >> >> That's production. Testing and dev? Who needs the hassle; just tear >> the > old server down and bring up the new server from scratch with all > resources updated from the get-go. >> >> Oh, and the starting point would be keeping your full set of config >> and > resource files under source control so that you can carefully review > changes before they are "pushed", can compare different revisions, and > can easily back out a revision with confidence rather than "winging it." >> >> That said, a lot of production systems these days are not designed >> for > parallel operation and swapping out parallel systems, especially for > cloud and cluster systems. In these cases the reality is more of a > "rolling update", where one node at a time is taken down, updated, > brought up, tested, brought back into production, tested some more, > and only after enough burn in time do you move to the next node. >> >> This rolling update may also force you to sequence or stage your >> changes > so that old and new nodes are at least relatively compatible. So, the > first stage would update all nodes, one at a time, to the intermediate > compatible change, and only when that rolling update of all nodes is > complete would you move up to the next stage of the update to replace > the intermediate update with the final update. And maybe more than one > intermediate stage is required for more complex updates. >> >> Some changes might involve upgrading Java jars as well, in a way that > might cause nodes give incompatible results, in which case you may > need to stage or sequence your Java changes as well, so that you don't > make the final code change until you have verified that all nodes have > compatible intermediate code that is compatible with both old nodes and new nodes. >> >> Of course, it all depends on the nature of the update. For example, >> adding > more synonyms may or may not be harmless with respect to whether > existing index data becomes invalidated and each node needs to be > completely reindexed, or if query-time synonyms are incompatible with > index-time synonyms. Ditto for just about any analysis chain changes - > they may be harmless, they may require full reindexing, they may > simply not work for new data (i.e., a synonym is added in response to > late-breaking news or an addition to a taxonomy) until nodes are > updated, or maybe some queries become slightly or somewhat inaccurate until the update/reindex is complete. >> >> So, you might want to have two stages of test system - one to just do >> a > raw functional test of the changes, like whether your new synonyms > work as expected or not, and then the pre-production stage which would > be updated using exactly the same process as the production system, > such as a rolling update or staged rolling update as required. The > closer that pre-production system is run to the actual production, the > greater the odds that you can have confidence that the update won't compromise the production system. >> >> The pre-production test system might have, say, 10% of the production >> data > and by only 10% the size of the production system. >> >> In short, for smaller clusters having parallel systems with an atomic > swap/redirection is probably simplest, while for larger clusters an > incremental rolling update with thorough testing on a pre-production > test cluster is the way to go. >> >> -- Jack Krupansky >> >> -----Original Message----- >> From: Faisal Mansoor >> Sent: Saturday, November 1, 2014 12:10 AM >> To: solr-user@lucene.apache.org >> Subject: How to update SOLR schema from continuous integration >> environment >> >> Hi, >> >> How do people usually update Solr configuration files from continuous > integration environment like TeamCity or Jenkins. >> >> We have multiple development and testing environments and use >> WebDeploy > and AwsDeploy type of tools to remotely deploy code multiple times a > day, to update solr I wrote a simple node server which accepts conf > folder over http, updates the specified conf core folder and restarts the solr service. >> >> Does there exists a standard tool for this uses case. I know about >> schema > rest api, but, I want to update all the files in the conf folder > rather than just updating a single file or adding or removing synonyms piecemeal. >> >> Here is the link for the node server I mentioned if anyone is interested. >> https://github.com/faisalmansoor/UpdateSolrConfig >> >> >> Thanks, >> Faisal >> >> > >