text:
Morning. There's plenty of reasons to be excited about the weekend ahead: Chris Froome's shock decision to stick pins in Bradley Wiggins's tyres and cycle off into the sunset with the yellow jersey; the next two editions of Pointless; and, of course, an Open where it won't bucket it down for 48 hours straight, unlike a certain tournament last year. The weather forecast for this weekend is mainly dry (it'll be cold too but you can't have anything). Not that things will be easy, Tiger Woods has described areas of the Lytham & St Annes rough as "unplayable" and other players agree. Actually, pretty much every player.
Tiger is back up to No4 in the world after a good year and is favourite with the bookies, just ahead of Lee Westwood attempting to win his first major in 864 attempts. Luke Donald is also tipped but if he wins then no one will be able to criticise him for being world No1 while failing to challenge for majors so shady cartels secretly controlling the world should prevent a victory.
Anyway, here are the tee-off times, it's safe to say the groups going out between 9.20am and 9.42am are worth keeping an eye on.
The Open tee times, day one
1 06:19 Barry Lane, James Driscoll
2 06:30 Richard Finch, Garth Mulroy
3 06:41 Matthew Baldwin, Adilson Da Silva, Tadahiro Takayama
4 06:52 Rafa Echenique, Kodai Ichihara, John Huh
5 07:03 Sandy Lyle, Todd Hamilton, Mark Calcavecchia
6 07:14 Alejandro Canizares, Jeev Milkha Singh, Greg Chalmers
7 07:25 John Daly, Chad Campbell, Michael Hoey
8 07:36 Thongchai Jaidee, Justin Leonard, Simon Khan
9 07:47 David Duval, Raphael Jacquelin, Miguel Angel Jimenez
10 07:58 Stephen Ames, Robert Rock, Kyle Stanley
11 08:09 Stewart Cink, Rafael Cabrera-Bello, Johnson Wagner
12 08:20 Jamie Donaldson, Bill Haas, Ye Yang
13 08:31 Davis Love III, Tim Clark, Paul Lawrie
14 08:42 Adam Scott, Alan Dunbar (A), Matt Kuchar
15 08:58 Vijay Singh, Nick Watney, Ian Poulter
16 09:09 Darren Clarke, Ernie Els, Zach Johnson
17 09:20 Lee Westwood, Yoshinori Fujimoto, Bubba Watson
18 09:31 Dustin Johnson, Graeme McDowell, Hiroyuki Fujita
19 09:42 Tiger Woods, Justin Rose, Sergio Garcia
20 09:53 Ryo Ishikawa, Martin Kaymer, Tom Watson
21 10:04 Thomas Bjorn, Aaron Baddeley, Charl Schwartzel
22 10:15 Jason Dufner, Martin Laird, Kevin Na
23 10:26 James Morrison, Daniel Chopra, Joost Luiten
24 10:37 Thorbjorn Olesen, Troy Matteson, Thomas Aiken
25 10:48 Brad Kennedy, Mardan Mamat, Steven Tiley
26 10:59 Warren Bennett, Aaron Townsend, Grant Veenstra
27 11:10 Dale Whitnell, Sam Walker, Elliot Saltman
28 11:31 Bob Estes, Steven O'Hara, Brendan Jones
29 11:42 Juvic Pagunsan, Scott Pinckney, Nicholas Cullen
30 11:53 Steven Alker, Lee Slattery, Russ Cochran
31 12:04 Tom Lehmanm Pablo Larrazabal, Greg Owen
32 12:15 Marcel Siem, George Coetzee, Chez Reavie
33 12:26 Marcus Fraser, Lucas Glover, Gregory Havret
34 12:37 Charles Howell III, Paul Broadhurst, Richard Sterne
35 12:48 Carl Pettersson, KT Kim, Gary Woodland
36 12:59 Ben Curtis, Paul Casey, Trevor Immelman
37 13:10 Mark Wilson, Branden Grace
38 13:21 Harris English, Simon Dyson, Gonzalo Fernandez-Castano
39 13:32 Angel Cabrera, KJ Choi, Ross Fisher
40 13:43 Jonathan Byrd, SM Bae, Alvaro Quiros
41 13:59 Nicolas Colsaerts, Hunter Mahan, John Senden
42 14:10 Bo Van Pelt, Francesco Molinari, Toshinori Muto
43 14:21 Rory McIlroy, Louis Oosthuizen Keegan Bradley
44 14:32 Rickie Fowler Padraig Harrington, Manuel Trappel (A)
45 14:43 Luke Donald, Phil Mickelson, Geoff Ogilvy
46 14:54 Steve Stricker, Toru Taniguchi, Anders Hansen
47 15:05 Peter Hanson, Retief Goosen, Robert Allenby
48 15:16 Jim Furyk, Koumei Oda, Fredrik Jacobson
49 15:27 Marc Leishman, Brandt Snedeker, Alexander Noren
50 15:38 Andres Romero, Jbe Kruger, Richie Ramsay
51 15:49 Ted Potter Jr, Ian Keenan, Andrew Georgiou
52 16:00 Troy Kelly, Morten Orum Madsen, Anirban Lahiri
53 16:11 Prayad Marksaeng, Justin Hicks, Ashley Hall
8.16am: Our early leader is Jeev Milka Singh, who is two under after four, followed by Thailand's Thongchai Chaidee on one under after two. Sandy Lyle and John Daly are already moving backwards fast – if Daly can ever move fast – they're both on two over.
8.35am: Although Scott Murray isn't here - he's at the actual tournament reporting on actual live golf where you can touch the players (before being arrested) - that doesn't mean we're not going to mention Sergio. He's out at 9.42 in a mouthwatering group that also features Tiger Woods and Justin Rose. "Really hoping Sergio can win it this week as a tribute to Seve. It would be a shame if a player of his undoubted talent never won a major," says Steve Pye, who may be in for some disappointment. Oh, and Steve has also written a wee blog on Seve's Open win in 1988 [checks Steve's link doesn't contain any porn] ... you can read it here. Singh and Jaidee still top the leaderboard on two- and one-under respectively.
9.00am: OK so Sergio isn't storming the leaderboard (fair enough seeing as he hasn't teed off yet) but, as ever, Spain are doing well at a big sporting event. Miguel Angel Jimenez and Rafael Cabrera-Bello are both one under. Minor sporting nation Great Britain also have a contender: Matthew Baldwi, the lesser known Baldwin brother, is one under. Seeing as a few people are out now, let's have a leaderboard:
Jeev Milkha Singh -2 (6)
Matthew Baldwin -1 (9)
Thongchai Jaidee -1 (5)
Miguel Angel Jimenez -1 (5)
Rafael Cabrera-Bello -1 (3)
9.30am: Paul Lawrie, who you may remember from moments such as WINNING THE WHOLE EFFING TOURNAMENT in 1999, has moved to a share of the lead with Singh at two under. Lee Westwood has birdied the first and is just behind. "How about a celebrity edition of Pointless with Sergio, Chris Froome and Ian Bell as contestants?" asks Noah Kidron Style. "They should just cancel the week's sport and have that instead." Chris Froome's first question: name the most obscure Guardian columnists you've won the Tour de France for.
9.46am: Westwood is off to a flier and is two under after two. Paul Lawrie leads on three under though. "So Woods thinks that some areas of rough are 'unplayable'?," storms Matt Dony. "Hey, Tiger, here's an idea; Stay out of the jeffing rough! Sheesh, do we need to spell everything out for these pampered stars?" The Tiger/Rose/Sergio group are out, and Justin dumps it into the bunker - he gets himself out of trouble and has a decent chance at making par. Sergio is yet to melt down and taps in for par.
9.51am: Ouch. After ending up in the bunker, Rose can't save par and is one over after one. Tiger's off to a good start rolling it in from around 12 feet out for a birdie. In other news, they've turned Hackney's finest pitch and putt course – the foul wind coming off the canal on a warm day is enough to unsettle the finest of players – into a campsite for the Olympics. I went to play the other day and they'd fenced it off. I clambered over the fence and sat down and wept on the 13th green. Mind you, if you get pitch next to a bunker you get your own personal beach.
9.58am: Darren Clarke, the defending champion, is two over. Lee Westwood isn't in a much better place: he has a four-footer for bogey and his early charge has ended for now.
10.03am: Lee Westwood misses his short putt for bogey on the third and is now back to level par - he started off with a decent tee shot too. It's not blazing sunshine but the course is playing OK with a gentle breeze. "As well as backing Sergio, I have a massive 50p each way on Paul Lawrie at 66/1," says Steve Pye. "Of course he is now raising my expectations. It is the hope that kills us all." Well, here's some hope for you ...
Singh -3 (11)
Lawrie -3 (5)
Els -1 (4)
Woods -1 (1)
10.08am: Sergio hits a terrible second shot that sails wide of the green put chips back on and saves par. Lawrie then has to chip in from off the green for par ... and does so. McDowell's birdie takes him to one under.
10.15am: Ah. Singh drops a shot so Lawrie is now on his own at the top. Ernie gets into the spirit of things and bogeys to take himself back to level. Rob Bagchi will be taking over proceedings - he's at email@example.com.
Lawrie -3 (6)
Singh -2 (12)
McDowell -1 (3)
Woods -1 (2)
10.26am: Morning everyone. Westwood's tee shot off the fifth goes right. "Not a breath of breeze," says Peter Alliss and everyone seems non-plussed why his shot flew off. Tiger Woods, settles down to play his chip up to the third flag, but walks away when distracted, settles back down again and plays a beauty to three inches to make par and stay at one-under. GMac's birdie attempt at the fourth spins wide of the hole. And, Sergio, oh Sergio, double-bogeys the third.
10.30am: Justin Rose joins García on two over at the third. Then the camera shifts to Westwood, in the Ernie Els bunker at the fifth, plays an excellent recovery wedge to give him a chance of par, three feet short of the cup, which he sinks. Up at the sixth Ian Poulter holes from 20 yards – he's one under.
Lawrie -3 (7)
Singh -2 (12)
Jaidee -1 (11)
Scott -1 (6)
Watson -1 (5)
Woods -1 (3)
Poulter -1 (6)
10.41am: Short interview on the BBC with Tony Jacklin who will be commentating for the Corp here. I'm too young to remember 1969 but I do recall the 1985 Ryder Cup fondly, particularly TJ on the balcony of the Belfry clubhouse, introducing his victorious players to spray champagne at the crowd. I belive he referred to Paul Way as "Wayway" and Ian Woosnam as "Little Woosie". Where were we? Singh's second at the 14th lands short, having just double bogeyed the 13th to drop him back to par. Glorious putt slightly up the hill from Tiger at four for birdie to go two-under. He's resplendent in Richie Benaud's "bone" hue. Paul Lawrie joins Woods in the lead on two-under with a bogey at eight and Adam Scott chin-putts his birdie in for a three-way tie.
10.46am: Sergio has the pick of the three tee-shots, all hit with a five-iron, at the par-three fifth. Woods is wayward, to the right with the pin on the left, Rose short but on the green and García with a four-yrad birdie chance.
10.52am: Sorry for the Woodws/Garcia/Rose fixation but I'm slightly straitjacketed by the BBC overage. Woods plays a fine chip to within three feet of the hole. Ahead of him Westwood misjudges his chip approach and leaves it 15 yards short. Now Rose putts for birdie at five and it rolls around the cup and stays out. He taps in for par. García's birdie putt snakes left and ends up two inches wide. Woods nails his par, judging the pace perfectly.
Lawrie -2 (9)
Woods -2 (6)
Scott -2 (7)
Da Silva -1 (17)
Jaidee -1 (13)
Watson -1 (6)
McDowell -1 (5)
Baddeley -1 (3)
Schwartzel -1 (13)
Dufner -1 (2)
10.59am: Around the sixth green McDowell plays a fine chip out of the bunker with a deft flick, just racing to the right of the hole. Catch-up time on the telly, showing Da Silva's putt for birdie on the 17th and his salute to the gallery. Barry Lane finishes in 73, +3. And Zach Johnson joins the group on one under with his birdie at seven.
11.04am: McDowell two-putts the sixth, his first trickling agonisingly around the right rim. His group clears off to let Rose/Woods/García play their second shots, all three of them are around the dog-leg. Rose is furthest away and pops it into the protective bunkers in front of the green. Woods is 221 yards short and lands it on the front of the green with a five-iron. Sergio, in semi-nasty rough, plays a decent recovery, low and flat, up the right to the edge of the green.
11.11am: Bubba Watson, at seven, plays his second sensational bunker recovery of the moring. While he waits to putt Westwood slots his 12-yard putt for birdie. García at the sixth, formerly a par-five, gives himself a good chance of par with a fine putt from the edge of the green that goes past the hole by a couple of feet. Watson birdies seven to join the leaders for half a minute before Woods takes the overall lead with a 12-foot up and down birdie putt, straight into the middle of the cup. He's three under and playing brilliantly. García makes par, as does Rose.
11.20am: Bubba Watson's second to the eighth is a peach, with the flag to the front of the green he judges it beautifully and it skips only a couple of yards past. Tony Jacklin and Peter Alliss are bemoaning the lack of wind so far. It should come later on.
11.26am: Woods has to stand back from his second at the seventh to berate spectators taking photographs. And when he finally makes the shot he mishits it too high and right and has an angry swish with his club. Bubba Watson joins Woods at the top of the leader board with a birdie at eight while Paul lawrie misses his chance to make it a three-way tie when his 25-ft birdie putt on 11 glides to the left of the hole. "Is there any evidence that tough/unfair set-ups allow the cream to rise to the top?" asks Gary Naylor. "My feeling is that US Open style penalties for the slightest fault in ball striking makes golf a bit of a lottery and anyone can get lucky and come through to win at -3 or so. The best players in the world, fully motivated and properly prepared, should be shooting -12 or so to win majors. It shouldn't be reduced to who is best at getting up and down from 70 yards away from a sloping green." The evidence of the last few years' majors and their ever-changing cast of winners suggest that they do, Gary.
11.31am: Another glorious shot from Woods, his third at seven, pitches perfectly over the ridge on the apron, spins and stops a foot or so past the hole. Justin Rose, one of my each-eay bets last night, is now four over after bogeying seven, breaking his par putt wide of the cup. Sergio birdies it, though, giving our absent friend Scott Murray something to cheer. I do hope he's got a pencil to chew. Then Tiger taps in for his birdie and the lead.
Woods -4 (7)
Watson -3 (8)
Lawrie -2 (11)
Scott -2 (10)
Johnson -2 (9)
McDowell -2 (8)
11.36am: Adam Scott's eagle putt on 11 falls only two feet short and to the right of the hole. He knocks in his birdie with that ludicrously long putter to tie with Bubba on -3 in second place. Birdies, too, for Westwood and McDowell, the latter then moves to the 9th tee and misses a hoel in one by a deadened skip and less than a foot. Lawrie makes a Horlicks of his birdie putt at 12. leaving it about 8ft short.
11.41am: Justin Rose's woes continue, fluffing his approach to eight. McDowell, meanwhile, starts the back nine at three under, having made that rudimentary birdie on nine.
11.48am: We're at the eighth wher Rose's travails are continuing while Woods is looking imperious with Sergio somewhere, as ever, inbetween. Woods's birdie putt – slides wide at the last but he easily makes par. Sergio bogeys, after messing up his wedge approach and Justin goes to four over with his bogey after a woefully short chip and run.
11.49am: Adam Scott ties with Woods by back-to-back birdies at 11 and 12.
Scott -4 (12)
Woods -4 (8)
Watson -3 (9)
McDowell -3 (9)
Jaidee -2 (16)
Lawrie -2 (12)
Johnson -2 (10)
11.59am: Dan Eastop writes: "Just watching Sergio's putting grip: looks like a right dog's dinner to me. Not a putting grip of a man with the confidence to win The Open!" It's an odd one, Dan. His right hand hanging loose with only his index and middle fingers on the shaft.
12.02pm: Woods's tee shot at the 10th skips, rolls and lands in a divot while up ahead Adam Scott moves to five under with another nailed birdie putt from 10ft out. Tony Jacklin assesses that the first nine is so much easier than the back nine, that Garcia and Rose have already played themselves out of contention. "You have to be in the red" at the end of today, he says. And they won't be, barring miracles.
12.08pm: Ernie Els's birdie at 11 puts him on two-under and building momentum and he follows it with a fine tee-shot at 12. Sergio's second shot from the X-rated rough at the 10th is a gem and he rockets it on to the green. Rose at five-over plops his approach on to the green, watched by a Blackpool pheasant. Woods's recovery from his horrible lie is superb, though it looked ungainly, with all his weight on the back foot and leaves an excavation that Tony Robinson would get his trowel out for.
12.12pm: Paul Lawrie rejoins the group on three-under with a fine birdie putt on 14 and Els makes par. Bubba's eagle putt at 11 stays too straight and doesn't snake in at all, leaving him five feet for par. Now Woods's birdie putt at 10 falls short and he taps it in for par.
Scott -5 (13)
Woods -4 (10)
Lawrie -3(13)
Johnson -3 (12)
Watson -3 (10)
McDowell -3 (10)
12.14pm: Bubba Watson makes his birdie putt, picks up the ball and waves at the crowd. He moves up to four under.
12.20pm: Oh. Adam Scott's approach play has been superb and sets him up for another birdie putt, though a long 30-footer, at 13. He reads it well again but just falls short.
12.27pm: South Africa's Thomas Aiken has made a storming start, the Jo'Burg winner of last year's Spanish Open is three-under after seven. Paul Lawrie moves ahead of him with his second successive birdie at 15. Ian McCourt, yes him, asks "can anyone explain Rickie Fowler's beard"? He's a Gary Neville fan?
Scott -5 (13)
Lawrie -4 (15)
Z Johnson -4 (13)
Watson -4 (12)
McDowell -4 (12)
Woods -4 (10)
12.33pm: McDowell's 8ft birdie putt from the right of the green at 13 fails to turn in at the last and dribbles an inch or so past. Woods makes par on the par-five 11th while Justin Rose's heavy hands with the putter again undoes his hopes of a recovery but he makes par after binging his birdie putt.
12.37pm: Good lord, an email from someone real, unlike theat McCourt chap. It's Steve no surname. Steve X writes: "This is stupid, I'm wasting my day here clicking from your text commentary to the cricket then to the cycling and then back through the process again and again. Can't we have some sort of monster mbm with all of the entries from the three sports going on (not a summary though - don't want to lose any of the pointless, banal witterings)? I mean this is affecting my productivity and I'm only a waste of space public sector worker - how are the wealth creators/backbone of our economy in the private sector going to be able to keep an eye on the updates and still pay all of that tax that we desperately need to pay for my pension?" Too true, Steve. We had the today in sport one, until those pesky punners did for it. Who should write it, though? Smyth is cricketing, Bull's on Olympics duty, Murray's bagged a proper assignment, out on the course. Baz? McCourt?
In other news Adam Scott moves further ahead, two strokes in front on six under after 15.
12.41pm: Another email. You're spoiling me. "Hi, I'm sorry but was Naylor ripping into US golf earlier? You have to love his nerve as our Open has been played out in awful weather meaning we have had players no one has heard of win like Ben Curtis," writes Hussein Sodaney. Are you dissing Naylor, Curtis, Todd Hamilton et al in one zinger, Hussein? I admire your scope.
12.46pm: Tiger misses another 10ft+ birdie putt, his fourth in the last five holes . Peter Alliss thinks he looks agitated, grumpy. On which subject Matt Dony asks pertinently: "A serious question: What is it about some sports that make the participants more precious about sounds and distractions? Golfists demand a certain reverence while addressing the ball, tennisers like silence as they serve, whereas a penalty shoot out is conducted in a cacophony. A penalty in rugby often (but not always) leads to a slight hushing, but certainly not silence, and surely each of these takes huge amounts of concentration and technique." Is it just what they're used to? Rather Clarkson-esque use of "tennisers" and "golfists", too, Matt. Zach Johnson moves to five under at the 14th by sinking his birdie, Bubba Watson drops a shot at 13, his caddie gurning furiously when Watson misreads the putt.
12.50pm: Alliss is praising the contributions of the Giggleswickian and Carthusain score boys while addressing the emails and other omplaints of his viewers who bemoan the pros leaving bunkers without raking the sand. There are volunteers to do it for them. Westwood in trouble right under the 4ft lip of a bunker at 14. He plays out lpeft-handed brilliantly. Adam Scott now sinks another birdie at 16. He's now -7. Leader board next.
Scott -7 (16)
Z Johnson -5 (14)
Lawrie -4 (16)
McDowell -4 (13)
Woods -4 (12)
Watson -3 (13)
Aiken -3 (9)
12.56pm: The nominations, well two, for the monster conglomerate mbm/obo/hbh are Baz and Bull. I'll suggest it. I'm sure they'll be delighted.
1.01pm: Zach Johnson sinks his sixth birdie after that bogey at the third to move to five under. Westwood has back-to-back birdies to put him on one over. Adam Scott is on course for a 63. Pete Singfield saves Baz and Bull the bother, and Steve X for that matter: "In response to Steve X at 12.37, I have craftily changed the dimensions of three web browsers allowing simultaneous viewing of the Tour, Open and Test. Don't tell the boss!" I'm no grass, Pete.
1.05pm: Adam Scott's reading of his putts today has been flawless, making par on the 17th after knocking his birdie attempt dead straight and only marginally short from 30ft. Wales' Jamie Donaldson heads to the scorer's hut with a 68.
1.09pm: At the 14th McDowell and Bubba Watson save par with lengthy putts while Zach Johnson's march could continue after a lovely dinked chip gives him 6ft putt for birdie. On 18 Lawrie replicates Johnson's excellent approach, perhaps improves upon it so has a putt for a 65. Gary Nylor sets the record straight: "Mr Sodaney is, I'm afraid, mistaken in his interpretation of my comment. Links golf is gloriously unpredictable, a slave to the weather-gods (I grew up just south of the many links that run from Southport to Blundellsands and never looked at a forecast because it could go through all four seasons in one day). At The Open, it might be a day for a 63 or 73 - who knows? In the US Open, the blazers set it up to be a 73 day out of choice - and diminish the spectacle and fairness as a result."
1.16pm: Sergio looked to be in a bit of trouble at 14, in the rough but helped by being among the spectators who had tramped it down a little. He plays a decent recovery shot but it could have been better if it didn't plug on landing and skipped on to the green. Paul Lawrie birdies the last and finishes on 65, making him the clubhouse leader. Woods's second shot at 14 angers him. "God, Tiger. God," he moans and has another air swish.
1.20pm: "Re silence (mbm Matt Dony, 12.46pm)," writes Andrew Osborne. " …and athletes like triple jumpists want as much racket as possible when preparing for run-up etc. I'm sure if he had any say in the matter Wiggo would decline the vocal support of dayglo-mankini-wearists." What about the support of Wellerists, all in their paisley shirts and two-tone Gibson shoes? And Matt Dony has done one to the cricket after my monstrous Clarkson slur. Adam Scott has played himself out of trouble at 18, but not sufficiently to guarantee his 63. He's on the green now. Let's see how he does and then post the leader board.
1.23pm: Adam Scott finishes on 64, bogeying the last when his par putt breaks left and rolls six inches past the cup. McDowell bogeys the 15th.
Scott -6 (18)
Z Johnson -6 (16)
Lawrie -5 (18)
Woods -4 (14)
Watson -3 (16)
McDowell -3 (15)
Aiken -3 (10)
1.32pm: Ian Poulter finishes in 71 while Tiger plays a wonderfully powerful recovery from the rough at the 15th. Matt Dony is back in The Oval lunch break, with a point for Gary Naylor: "But, Gary, maybe golf is in a period of transition, and events like the US Open are helping shape the next, better generation. The point of elite level sports is to challenge the participants. When Tiger first came along, he brought a consistency that had never been seen before. As others catch up, it's only a matter of time before some new whippersnapper appears who's even more consistent, and continually shoots a 69 where you'd expect 73 to be a good score. Players routinely to for shots these days that would have been higher risk in the past, and that will continue. Cream does rise, then gets replaced by even better cream." Mmmm even better cream.
1.36pm: And here's Gary on another point … about the demand for silence: "It always surprises me (especially given their shared roots) that pro darts can be played in the midst of a roiling riotous assembly and snooker needs a cathedral hush. That you have to be quiet for tennis is ridiculous - listen to the players FFS!" The Beeb is breaking from coverage with an interview with the clubhouse leader Adam Scott, who says he's bracing himself for a tough challenge and hopes the wind gets up because his game's in good shape to tackle tough conditions.
1.38pm: Woods drops a shot at 15 after that remarkable recovery shot but McDowell takes his place on four under with a birdie at 16.
1.42pm: They've just replayed Paul Lawrie's glorious chip in at the fifth, when I was on the tube. Catch it on the highlights if you can. Darren Clarke walks on to the 18th green at six over. "He'll be a little disappointed," says Lawrie. He'll be a little more fed up than that. "What chance Woods and Scott go out together in one of the final pairings on Sunday?" asks Jonathan Wood on an issue I was wondering about this morning. "Steve Williams' body language would be fun to see."
1.46pm: Zach Johnson chips out of one of the right-side bunkers at 18 to give himself a decent chance of par and 65. "I'm not sure that participants in sports inevitably get better and better. Technology does though, and the solution is not to make the task more difficult (some greens' landing areas are almost non-existent) but to limit the technology. All sports do this with regard to drugs for example and many with regard to specifications (wing sizes in F1, no recumbent bikes in the Tour de France, no titanium cricket bats etc). If they are hitting the ball too far, keep the course the same, but change the club and the ball." Good point, Gary. I was reading about Geoff Ogilvy playing Royal Melbourne this last month with a persimmon driver and a box of 1980s issue balls. He said he enjoyed it far more than he ever has recently playing with the new hard balls and metal drivers because he was tackling the challenge that the course designer had set for him as intended. Darren Clarke finishes on six-over.
1.52pm: McDowell is in difficulty at 17, way off the fairway and having to play to the green with a white six-foot fence to the right of his line. While he lines it up Westwood plays his second to 18 – he's three-over – and dinks it on to the green about 10 yards past the hole, having dropped four shots since the 12th tee. Woods's birdie putt at 16, again a long one, turns a foot too soon. McDowell's finally ready and plays a great shot but a club too light on to the front of the green.
1.55pm: Bubba Watson's third at 18 is a 25-yard putt that he gets too much on and it races past the whole, leaving him a tricky 8ft putt for par. Westwood's birdie putt at the same hole is left six inches to the right of the hole and he ends on three-over.
1.59pm: McDowell's birdie putt on 17 is a monster, 30 yards or more and he rolls it to within four feet. Watson cards a four at 18, as did Westwood.
Scott -6 (18)
Lawrie -5 (18)
Z Johnson -5 (18)
McDowell -4 (17)
Els -3 (18)
Watson -3 (18)
Woods -3 (16)
Aiken -3 (13)
2.05pm: Here comes the wind, we've waited as long for it as Peter Alliss has for Tiger's smile who has finally grinned after a fine drive at 17. Nath Jones pings one in on the subject of noise: "I remember reading some research that showed that if there's constant noise (like in darts and football) it doesn't affect golfers or tennis players – the issue is with the odd, unexpected shouts." "Get in the hole"? "U–S–A"? Something random like "Oi, Johnny Mathis, walk my way" as heard at a pro-am 20-odd years ago?
2.08pm: Paul Casey is two-under after four. Wahey!
2.15pm: Sergio tees off at the 18th at two-over. I haven'ts een much of his back nine but if he could finish on 71 he would have a chance. Woods's tee-shot is, as Kenny Brown says, "lovely". McDowell cards 67 with a bogey at 18.
2.18pm: Matt Dony continues his debate with Gary Naylor, with us as the middlemen: "But also training methods and attitudes improve and alter. Part of early period Tiger's strength was that he was fitter and trained harder than almost any other golfer in history. That approach has been copied, and is now the norm, and so general levels of ability have crept up. And, anyway, what is the fundamental difference between restricting technology and altering the courses? If a course was designed to be played with older, inferior clubs and balls, why not play more tournaments on brand new courses, designed for today's clubs and balls?"
Scott -6 (18)
Lawrie -5 (18)
Z Johnson -5 (18)
McDowell -3 (18)
Els -3 (18)
Watson -3 (18)
Woods -3 (17)
2.23pm: Rory McIlroy approaches the first tee after a wee bit of gawky posturing with his feet position when he held his last practice shot followthrough. Good kick on to the green and 12ft to the left of the hole. Louis Oosthuizen's tee shot is equally good, probably 10ft away but to the right. Keegan Bradley is alos on the green but will take his second shot first.
2.27pm: Woods's birdie putt, another 18-25 footer is missed but his conservative play today has paid dividends, finishing on three-under. Sergio is two over in the clubhouse, Justin Rose four-over. If those just starting face much worse conditions than those who are finishing, as predicted by the BBC's on-course analysts, Sergio won't be too badly placed.
2.29pm: Bradley birdies the first and McIlroy and Oosthuizen, far closer, can only par. Here's Jonathan Wood with a reproach for Matt "the iconoclast" Dony: "Gary Naylor is, as usual, right. Limits on golf balls would do the trick easily, as the R&A realise (but sadly they also realise they lost that argument - along with belly putters - to the manufacturers several years ago). And Matt Dony, shame on you. Are you really suggesting - in the Guardian - that the world needs more new golf courses? Do you work at Trump Tower?" Right I'm off for scran. Tom Lutz resumes. He's on firstname.lastname@example.com
2.33pm: Rickie Fowler tees off on the first and finds the green to set himself up with a ten-footer for birdie. Padraig Harrington is next up and I feel more gentlemanly just looking at him, his shot reaches the green too but it'll be a long put to get to one-under.
2.42pm: Luke Donaldo tees off and it's trickles into the bunker of the left of the green. Mickelson's shot is better but he'll still do well to birdie. Fowler parred the first by the way, as did Harrington. "On Rob's 'watch', I've been called Clarkson-esque and linked to Donald Trump," says Matt Dony. "I'm starting to feel like, after years of (apparently) unrequited devotion, the Guardian might not be for me. Does the Sun do any." Hmmm, depends ... what do you look like with your top off?
Scott -6 (18)
Lawrie -5 (18)
Z Johnson -5 (18)
McDowell -3 (18)
Els -3 (18)
Watson -3 (18)
Woods -3 (18)
Fernandez-Castano -3 (5)
2.48pm: Donald's shot out of the bunker is just about adequate, and trickles to within six feet, he steadies himself and makes the putt. He trots away with a jaunty smile on his face, and well he might - his tee shot found an awkward little spot in the bunker. Phil's birdie putt is to within three-feet and he taps in for par.
2.53pm: Tiger is being interviewed by the BBC. He's pleased with his three-under, and makes a comment about the weather forecast not being accurate - it's barely a joke but there are waves of laughter off camera. Imagine if he made an actual gag! Harrington birdies the second.
2.59pm: Donald misses the green again with his second shot on hole two. He's looked a little scratchy so far but it's very early days. Rory McIlroy pars his third hole in a row, he's level for the championship. Elsewhere, Paul Casey has started well and is two under.
3.03pm: On the second, Donald recovers well and pitches to within a foot of the hole for par. If he can actually start hitting the greens he'll be in with a chance. Mickelson birdies on the same hole.
3.06pm: Paul Casey continues his charge and is now three under. Here's your leaderboard:
Scott -6 (18)
Lawrie -5 (18)
Z Johnson -5 (18)
McDowell -3 (18)
Els -3 (18)
Watson -3 (18)
Woods -3 (18)
Casey -3 (8)
3.16pm: Rory hasn't looked in brilliant form today and his iron shot lands well short of the green on the fourth, he then leaves his birdie putt five foot short. Rickie Fowler has problems of his own his bogey takes him to one over.
3.19pm: If you want a report on Tiger's progress today, look no further than this little link.
3.24pm: I'm back after a quick peruse of the Test match. You can email me, as above, @firstname.lastname@example.com
Adam Hirst is observant: "'2.53pm: Tiger is being interviewed by the BBC. He's pleased with his three-under, and makes a comment about the weather forecast not being accurate - it's barely a joke but there are waves of laughter off camera. Imagine if he made an actual gag! Harrington birdies the second.'
Those kind of jokes are known as 'Where's Jane? Jokes'. Gags that wouldn't be remotely funny elsewhere, but seem to have a golf crowd in stitches. Must be the release/relief at being able to laugh out loud after whispering all day."
3.31pm: Harrington bogeys the fourth to put him back on level par after getting too far underneath his chip approach and skying it. "Might I add one more suggestion for the mbm conglomerate?" asks Paul Taylor. " If you would do the bingo (at my church it's Tuesdays at 7pm) then I wouldn't have to stay out late to enjoy this sport." Er, clickety-click, Cameron's house, Heinz beans, trombones etc. I'm your man.
3.32pm: Luke Donald's approach to the fourth doesn't kick on and leaves him on the green but a good 30 yards short of the hole. Mickelson's is better, withing 8ft I think. A "doozy" apparently.
3.36pm: Time for the standings:
Scott -6 (18)
Lawrie -5 (18)
Z Johnson -5 (18)
McDowell -3 (18)
Els -3 (18)
Watson -3 (18)
Woods -3 (18)
Slattery -3 (14)
Casey -3 (10)
3.40pm: Mickelson rolls his putt – 8ft it wasn't, more like 5ft – for a birdie to take him into the red, after Donald settled for par after a fine attempt at a birdie. Fowler's birdie putt slides past the cup. he's in dudgeon, whether high or low, I'm not sure. Kirk Willis says: "Golf is the only sport where the competitors produce their own ball, rather than have it handed to them by the officials. Golf needs to control its ball like everyone else." Ball control, hmm. But they all have to meet the same standards I'm sure. The rest is about trusting their honour as they do with the cards.
3.46pm: Where McIlroy has a touch of the Seve's about his flash, risky approach to certain shots, Donald and Mickelson are displaying their customary efficiency, six-ironing the balls on to the fifth greens within a yard of each other's. McIlroy's second to the sixth out of the rough is a beauty. At the 18th Aaron Townsend is stuck by the back of the bunker, up a ridge with no room for backswing, and chooses to putt it into the middle of the sand then chips out within 10ft of the hole.
3.47pm: The greens are getting quicker as Mickelson and Donald have discovered with their birdie putts at five going past by a few feet. McIlroy's birdie putt looks for a few seconds as if it's going in from 60ft but just bends right at the end. Mickelson pars the fifth and Donald follows suit.
3.52pm: Keegan Bradley double-bogeys the sixth then Senden eagles the seventh, straight into the middle from 40ft in a brief catch-up reel. Here's a question. Why do they all tuck their shirts in? Would a flapping hem impede their swing? Or is it a dress code rather than a practical thing.
3.57pm: Harrington's third shot to the sixth pin out of the rough takes him a few minutes to assess but when he finally plays it, it's a beauty. Still needs a hell of a putt, 30ft or so, for par.
4.03pm: Keegan Bradley, after that double bogey, plays a corker of a second shot at the par-five seventh that was 18 inches from an albatross. He should make those two dropped shots back here. McIlroy has a longer putt for eagle but Oosthuizen's in trouble. Nick Lewis says: "Mickleson? Customary efficiency? You 'avin' a turkish mate?" Er, yes. I meant that he was not hitting it so high, playing within himself a bit but I can understand your laughter.
4.05pm: Bradley makes his eagle, McIlroy's attempt spins to the left of the hole and he looks peed off only to make birdie. Oosthuizen also bags a birdie.
4.10pm: Mickelson beams after a great bunker shot two feet short of the sixth hole. He's one-under with his new putter. Donald has a downhill birdie putt, about 20ft, and pushes it to the right. "General dress code normally requires a shirt to be tucked in, unless it is some sort of fitted shirt," writes Stu Smith. "May be different for other golf courses but ours is relatively strict on attire and etiquette."
4.13pm: Harrington's in the bunker to the left of the seventh green. When he played his iron shot he grimaced and bit his bottom lip. Mickelosn's tee shot at seven goes to the left but is in playable rough while Donald is bang up the middle.
4.15pm: Lee Slattery, who's had a fine round, is struggling at the seventeenth, hitting his second into the bunker to the right of the green and then chipping out with too heavy a touch and knocking it 10ft past. It leaves him with a hard par putt to keep him on three-under.
4.22pm: McIlroy bags his second birdie in succession to move to -2. Slattery missed his long par putt on 17 while Fowler, who made a mess of his eagle chance on seven, completely misreading the line and veering off to the right, birdies it and moves to one-over.
Scott -6 (18)
Lawrie -5 (18)
Z Johnson -5 (18)
McDowell -3 (18)
Els -3 (18)
Watson -3 (18)
Woods -3 (18)
Casey -3 (10)
Colsaerts -3 (9)
4.29pm: Mickelson's had a few problems at seven, his tee shot into the rough on the left, his second into the much longer rough on the right, knocks it across again and his fourth shot stalls well short of the green. Donald plays out of the deep bunker after misjudging his second, laying up almost then chips in range of a birdie.
4.33pm: Bradley's bold putt for birdie on nine is too bold and races over the side of the hole and 3ft past. McIlroy's attempt for birdie drifts to the left. Both hit the turn with par threes. It's starting to rain, according to the BBC's Maureen Madill. Mickelson double bogeys seven and Slattery bogeys 18 to finish with two fives and a 69.
4.38pm: Harry Redknapp's here. A word for the press Harry? Of course.
4.43pm: Harry would like Luke or Lee to win, but thinks Ernie has a chance. Mickelson's in a desperate position having played out of the bunker at eight, plugging it into the deep rough on the top of the bunker. Customary efficiency looks like the dumbest phrase of the day. He's asking for a ruling on the embedded ball and has to take an unplayable lie.
4.46pm: Mickelson, on the back of a seven at seven, now plays his fourth shot to the eighth after the penalty and it is a marvellous save (for a possible bogey rather than double) on to the green.
Scott -6 (18)
Lawrie -5 (18)
Z Johnson -5 (18)
McDowell -3 (18)
Els -3 (18)
Watson -3 (18)
Woods -3 (18)
Colsaerts -3 (10)
Muto -3 (10)
4.50pm: "Has Harry described anyone as a 'triffic player' yet? And does he have a car door with him to conduct the interview from?" asks Ali McLaren. He did say he was abig fan of Lee's which I heard as "Leeds" for some reason, naturally. He was dressed the part in Taylor Made clobber, but no Jag/Merc window to roll down, sadly. M ickelson makes his bogey putt on eight to go two-over but given where he was he sould be as pleased as the crowd was to make it.
5.01pm: Nicolas Colsaerts is on a roll, with a birdie at the 12th, moving to four-under and tying for fourth with Toshinori Muto.
5.03pm: Harrington moves to level par with a birdie at 10 while McIlroy's approach to the 11th spins back to give him a six-footer.
5.06pm: On the 11th green Oosthuizen's birdie putt goes dead straight and glides a foot to the left of the hole. He takes par. Bradley slots his birdie, his first single putt of his round. McIlroy moves to two-under with his birdie on the par five.
5.11pm: The 10th is proving a trial today and Mickelson gets too much back spin on his approach, landing 25ft from the hole but careering away after pitching to the front of the green. McIlroy chows down on a banana while waiting at the tee. Muto has a 15ft putt for birdie at the par-three 12th but pushes it to the right of the hole. Francesco Molinari stays on two-under at the 12th, Bo Van Pelt makes it three pars for the trio at the 12th.
5.13pm: Daniel Naylor, who might be new around these parts, asks: "The impostor who stole my last name has it all wrong. How is it fair, if you could have all four seasons in a day, for someone with a 9am tee time to have glorious weather, while someone with a 2pm tee time to have the kind of weather you might expect as a precursor to some sort of armageddon? Fair? How's that fair? Spectacle? I will concede that at least." Was he arguing fairness? I thought he was arguing for entertainment and versatility.
5.15pm: Mickelson has a birdie to comfort him for a poor run of holes with a great birdie up and downer from 30ft. He's back to two-over while Luke Donald is one-under.
5.20pm: Nico Colsaerts has an odd putting stance but is playing very well. He's just parred the 14th. McIlroy birdies 12 from 25ft, banana power to go -3 and Harrington's birdie putt at 11th falls 1cm short. That could so easily have dropped with the help of a stamp or some nearby fracking. He stays on level.
Scott -6 (18)
Lawrie -5 (18)
Z Johnson -5 (18)
Colsaerts -4 (13)
Muto -4 (12)
McDowell -3 (18)
Els -3 (18)
Watson -3 (18)
Woods -3 (18)
McIlroy -3 (12)
Bradley -3 (12)
5.23pm: "A 2 am tee time might be unfair for other reasons, aside from the weather," zings Steve Buist from Hamilton, Ontario. "I would think darkness would be a bigger challenge." My hammer fingers rather than the other Naylor lad, Steve.
5.30pm: Mickelson's got two gloves on now and, according to Andrew Cotter, pays the price for losing some 'feel' by skewing his birdie putt wide at 11. Donald, who has nine pars and one birdie, knocks his birdie putt at 11 close enough to make it 10 pars.
5.37pm: Mickelson's got his windcheater on and two gloves, looking like an armed robber says Andrew Cotter, but Keegan Bradley is still in his jumper and, as Peter Alliss points out, is showing off an ankle in "socklets" which I believe are now called "secret socks".
5.41pm: Donald bags his 11th par on the 12th, his birdie putt from 40ft knocked to tap-in range. Ogilvy's birdie attempt is a back of the putter tap away from holing so he stays on two-over but Mickelson bogeys it by pushing his nine-footer wide. He's now on three-over.
5.46pm: We haven't seen anything of Paul Casey over his last few holes but he's gone from three-under to one-over with double-bogeys at 15 and 17, having birdied four holes in the opening nine.
5.51pm: McIlroy's in the rough from the tee at 14 but punches it out with such power over the green, but not too far, that he scythes off some blades of grass which land on the peak of his cap. Bradley's also in the calf-high rough, Oosthuizen's ball is in the stands and he is looking for the right drop zone. While we wait Coelsarts moves to five-under with another great 20ft-plus putt for birdie at 15.
5.52pm: Bradley is contemplating an unplayable as the rain begins to fall.
5.59pm: Bradley has taken an age to decide what to do before taking his unplayable. So he has his fourth shot for par 120 yards or so from the pin. He chips it to the right of the hole and towards the back of the green, leaving him an almost inevitable double bogey. Oosthuizen's chip is delightful from the rough on the left of the green. McIlroy then plays an even better shot out of the fairway-length grass on the edge of the green to within two feet and he plonks it in for par. Donald then pars 14. He's had about eight long birdie putts today and is brilliant at making sure it's never more than two but there seems to be disappointment in the commentary box that he hasn't sunk more of them. Bradley does indeed double bogey.
Scott -6 (18)
Lawrie -5 (18)
Z Johnson -5 (18)
Colsaerts -5 (13)
McDowell -3 (18)
Els -3 (18)
Watson -3 (18)
Woods -3 (18)
Muto -4 (14)
McIlroy -3 (14)
Kruger -3 (9)
6.05pm: McIlroy's tee shot at 15 goes wide right and skelps an unfortunate spectator, Gerald Ford-style. The chap is receiving medical attention, but says he's OK and Rory gives him a signed glove. It stopped it from going out of bounds too.
6.07pm: Steve Stricker has just eagled 14 to move to four-under, straight in the hole from 100+yards. The referee has said that McIlroy's drive is in fact out of bounds but is seeking confirmation because the call is so close.
6.08pm: McIlroy has to go back to the tee.
6.13pm: McIlroy's (third) shot off the tee is long and true. At the 14th Luke Donald's second shot is a beaut, 15ft short of the hole. If things follow form he'll par it. Bradley is having another battle with the deep rough and manages to dig it out barely 10 yards on to the edge of the green.
6.15pm: Great fourth shot from McIlroy gives him a chance of bogey with a 20-footer while Cabrera double bogeys 17 and goes from two-under to level.
6.19pm: McIlroy's wayward drive ends up costing him two shots as he falls back to one-under.
Scott -6 (18)
Lawrie -5 (18)
Z Johnson -5 (18)
Colsaerts -5 (16)
Stricker -4 (13)
McDowell -3 (18)
Els -3 (18)
Watson -3 (18)
Woods -3 (18)
Muto -3 (15)
Snedeker -3 (11)
Kruger -3 (10)
6.22pm: Rory responds to his setback by driving the green at 16 while Donald nails his 13th par of the round at 14.
6.27pm: The specks of rain are on the camera lens now as the BBC focuses on the McIlroy trio. The Norn Irishman has a 20-footer for an eagle. Perfect line but maybe the rain affected it, maybe not, because it came to a stop a foot short. He still got one shot back, though, with two to play.
6.38pm: Harrington's second to the 16th leaves him with a birdie putt of about 20ft. The brollies are up and Oosthuizen lands in a bunker puddle at 17.
6.41pm: Donald pars the 15th. That's 14 out of 15 pars and one birdie. Stricker, meanwhile, who double-bogeyed the 14th, has given himself a chance of a three at 15 with a fine iron shot.
6.45pm: Oosthuizen decides to play it out of the mud, rather than dropping it in case it plugged. He gives it a thwack and gets it up the track but a wee bit waywardly. McIlroy's second shot is another wild one on the top of the ridge of bunkers protecting the hole. Coelsarts leaves himself with a 30ft putt for a 64.
6.48pm: Oosthuizen goes through the green at 17 with his third shot while back at 16 Donald excavates a huige divot to get it on the green with his second shot. Colsaerts' birdie putt is decent but 18 inches wide to the right of the hole. McIlroy leaves himself with an eight-footer for par at 17.
6.51pm: Donald edges himself towards another par with his birdie putt, reading the break from right to left but hitting it with insufficient power. Mickelson misses his birdie chance, too, and stays at three-over. Donald sinks his par putt. McIlroy makes par at 17, too.
Scott -6 (18)
Lawrie -5 (18)
Z Johnson -5 (18)
Colsaerts -5 (18)
McDowell -3 (18)
Els -3 (18)
Watson -3 (18)
Woods -3 (18)
Muto -3 (17)
Snedeker -3 (13)
Kruger -3 (12)
6.58pm: McIlroy opts for an iron off the tee at 18 and finds the fairway. Colsaerts has been the pick by far of the afternoon starters, an eagle, four birdies and a bogey, very impressive indeed even if the BBC were understandably more concerned with McIlroy and Donald.
7.00pm: Muto slides his birdie out on 18 to the left of the hole and past it by 3ft. He should finish on 67, three-under as he was after the front nine. Francesco Molinari also slides his birdie putt wide, this time to the right of the hole and ends with 69.
7.02pm: McIlroy's second shot to 18 is absolutely superb, drawing towards the pin and leaves him with a chance of a birdie from 20 feet or so.
7.04pm: It's been painfully slow this afternoon, the rate of progress is really getting on Peter Alliss's wick (and mine). The main offenders have been taking ages to line up iron shots even though what wind there's been has hardly been enough to ruffle Rickie Fowler's whiskers.
7.07pm: Mickelson's second shot at 17 is hooked into the bunker. He's had a rotten time out there, holes 7, 8 and 9 ruining his positive start. Donald is on the green for another long birdie chance. The "Luuuuuuuuuuuuuuuuke" chant gets an airing. More a bellow than a chant.
7.08pm: McIlroy's birdie putt is not as long as I estimated, probably only 10ft, and he sinks it to end with 67.
7.12pm: Aaaagh. Donald's birdie putt at 17 skims the edge of the hole and he settles for par.
7.15pm: We're winding up the coverage for today. You can follow the remaining action with the official Open leaderboard to see if anyone can eat into Adam Scott's lead. Thanks for your company through the day. Ian McCourt will be in the hot seat on Friday morning for the second round and I'll join you mid-morning. Have a good evening.
Scott -6 (18)
Lawrie -5 (18)
Z Johnson -5 (18)
Colsaerts -5 (18)
McDowell -3 (18)
Els -3 (18)
Watson -3 (18)
Woods -3 (18)
Muto -3 (18)
McIlroy -3 (18)
Snedeker -3 (14)


text:
Type: Improvement
Status: Closed
Priority: Minor
Resolution: Fixed
Affects Version/s: None
Fix Version/s: 1.3
Component/s: None
As of 1.2, Solr only instantiates one SolrCore which handles one Lucene index.
This patch is intended to allow multiple cores in Solr which also brings multiple indexes capability.
The patch file to grab is solr-215.patch.zip (see MISC session below).
The current Solr practical wisdom is that one schema - thus one index - is most likely to accomodate your indexing needs, using a filter to segregate documents if needed. If you really need multiple indexes, deploy multiple web applications.
There are a some use cases however where having multiple indexes or multiple cores through Solr itself may make sense.
Multiple cores:
Deployment issues within some organizations where IT will resist deploying multiple web applications.
Seamless schema update where you can create a new core and switch to it without starting/stopping servers.
Embedding Solr in your own application (instead of 'raw' Lucene) and functionally need to segregate schemas & collections.
Multiple indexes:
Multiple language collections where each document exists in different languages, analysis being language dependant.
Having document types that have nothing (or very little) in common with respect to their schema, their lifetime/update frequencies or even collection sizes.
The best analogy is to consider that instead of deploying multiple web-application, you can have one web-application that hosts more than one Solr core. The patch does not change any of the core logic (nor the core code); each core is configured & behaves exactly as the one core in 1.2; the various caches are per-core & so is the info-bean-registry.
What the patch does is replace the SolrCore singleton by a collection of cores; all the code modifications are driven by the removal of the different singletons (the config, the schema & the core).
Each core is 'named' and a static map (keyed by name) allows to easily manage them.
You declare one servlet filter mapping per core you want to expose in the web.xml; this allows easy to access each core through a different url.
USAGE (example web deployment, patch installed):
java -Durl='http://localhost:8983/solr/core0/update' -jar post.jar solr.xml monitor.ml
Will index the 2 documents in solr.xml & monitor.xml
Will produce the statistics page from the admin servlet on core0 index; 2 documents
Will produce the statistics page from the admin servlet on core1 index; no documents
java -Durl='http://localhost:8983/solr/core0/update' -jar post.jar ipod*.xml
java -Durl='http://localhost:8983/solr/core1/update' -jar post.jar mon*.xml
Adds the ipod*.xml to index of core0 and the mon*.xml to the index of core1;
running queries from the admin interface, you can verify indexes have different content.
USAGE (Java code):
//create a configuration
SolrConfig config = new SolrConfig("solrconfig.xml");
//create a schema
IndexSchema schema = new IndexSchema(config, "schema0.xml");
//create a core from the 2 other.
SolrCore core = new SolrCore("core0", "/path/to/index", config, schema);
//Accessing a core:
SolrCore core = SolrCore.getCore("core0");
PATCH MODIFICATIONS DETAILS (per package):
The heaviest modifications are in SolrCore & SolrConfig.
SolrCore is the most obvious modification; instead of a singleton, there is a static map of cores keyed by names and assorted methods. To retain some compatibility, the 'null' named core replaces the singleton for the relevant methods, for instance SolrCore.getCore(). One small constraint on the core name is they can't contain '/' or '\' avoiding potential url & file path problems.
SolrConfig (& SolrIndexConfig) are now used to persist all configuration options that need to be quickly accessible to the various components. Most of these variables were static like those found in SolrIndexSearcher. Mimicking the intent of these static variables, SolrConfig & SolrIndexConfig use public final members to expose them.
SolrConfig inherits from Config which has been modified; Config is now more strictly a dom document (filled from some resource) and methods to evaluate xpath expressions. Config also continues to be the classloader singleton that allows to easily instantiate classes located in the Solr installation directory.
TokenizerFactory & FilterFactory now get the SolrConfig passed as a parameter to init; one might want to read some resources to initialize the factory and the config dir is in the config. This is partially redundant with the argument map though.
RequestHandlerBase takes the core as a constructor parameter.
The test harness has been modified to expose the core it instantiates.
SolrDispatchFilter is now instantiating a core configured at init time; the web.xml must contain one filter declaration and one filter mapping per core you want to expose. Wherever some admin or servlet or page was referring to the SolrCore singleton or SolrConfig, they now check for the request attribute 'org.apache.solr.SolrCore' first; the filters set this attribute before forwarding to the other parts.
Has been modified to use the core exposed through the request attribute 'org.apache.solr.SolrCore'.
The feature has not been implemented yet; the starting point is that instead of having just one index directory 'index/', the naming scheme for the index data directories is 'index*/'. Have to investigate.
Uploading new schema/conf would be nice, allowing Solr to create cores dynamically; the upload mechanism itself is easy, the servlet dispatch filter needs to be modified.
Having replication embedded in the Solr application itself using an http based version of the rsync algorithm; some of the core code of jarsync might be handy.
The patch production process (not as easy as I thought it was with a Windows/Netbeans/cygwin/TortoiseSVN).
0/ Initial point is to have the modified code running in a local patch branch, all tests ok.
1/ Have one 'clean version' of the trunk aside the local patch branch; you'll need to verify that your patch can be applied to the last clean trunk version and that various tests still work from there. Creating the patch is key.
2/ If you used some IDE and forgot to set the auto-indentation corrrectly, you most likely need working around the space/indentation patch clutter that results. I could not find a way to get TortoiseSVN create a patch with the proper options (ignore spaces & al) and could not find a way to get NetbeansSVN generate one either. Thus I create the patch from the local trunk root through cygwin (with svn+patchutils); svn diff --diff-cmd /usr/bin/diff -x "-w -B -b -E -d -N -u" > ~/solr-215.patch.
Before generating the patch, it is important to issue an 'svn add ...' for each file you might have added; a quick "svn status | grep '?'" allows to verify nothing will be missing. Not elegant, but you can even follow with: svn status | grep '?' | awk '
' | xargs svn add
3/ Apply the patch to the 'clean trunk'.
TortoiseSVN 'apply patch' command only understands 'unified diff' thus the '-u' option.
Alternatively, you can apply the patch through cygwin: patch -p0 -u < solr-215.patch.
I've updated the 'dev' environment to an x86 Solaris 10 box which now generates the zipped patch( solr-215.patch.zip , same patch production method).
For Solaris 10 users, patch must be "gnu" patch: /usr/local/bin/patch is its usual location (not to be confused with /bin/patch...)
For x86, you can find it at ftp://ftp.sunfreeware.com/pub/freeware/intel/10/patch-2.5.4-sol10-x86-local.gz ; I don't know about diff but I'm using the version located at ftp://ftp.sunfreeware.com/pub/freeware/intel/10/diffutils-2.8.1-sol10-intel-local.gz
Issue Links
- is depended upon by
SOLR-350 Manage Multiple SolrCores
- Closed
- All
- Comments
- Work Log
- History
- Activity
- Transitions
This was committed a while ago. If it causes any problems, we should open a new issue to track progress.
Ok, I liked... fixing this is not hard.
Deprecation support was already baked into IndexSchema:
TokenFilterFactory tfac = (TokenFilterFactory)solrConfig.newInstance(className);
if (tfac instanceof SolrConfig.Initializable)
((SolrConfig.Initializable)tfac).init(solrConfig, DOMUtil.toMapExcept(attrs,"class"));
the problem is that BaseTokenizerFactory and BaseTokenFilterFactory both implement SolrConfig.Initializable so the IndexSchema assumes they are using the new interface. If someone extends something from these Base classes it is not called.
the fix is simply to call init( args ) from within init( config, args ) – I'll remove the warning message since that will be called by default now.
Mike Klass points out a BIG BAD problem with this patch:
The token filter interface keeps:
public void init(Map<String,String> args)
but this is never called, so it only tricks us into thinking it is backwards compatible.
1. Break the API – at least no one would get fooled into thinking it works
2. Add some hacky bits to IndexSchema readTokenFilterFactory that first calls the deprecated init, then calls the 'real' one. – make some clear statemes somewhere about how this works and how it will go away.
I don't have time to look at this for another week or so, but it is very important. Henri, if you have some time, it would be great if you could take a look at some options.
Replacing the line
SolrEventListener listener = (SolrEventListener)solrConfig.newInstance(className);
SolrEventListener listener = createEventListener(className);
should fix it.
FYI, firstSearcher/newSearcher hooks are now broken because the constructors to AbstractSolrEventListener was changed to take a SolrCore, and the code in SolrCore that creates event listeners does a simple newInstance()
marking Fixed in 1.3
(I believe Ryan left this open to track any potential issues ... if nothing else this way we'll remember to resolve it before releasing)
I just committed a HUGE patch that removes the SolrCore static singleton.
This does not yet support configuring and using multiple cores. For clarity, i think that should get its own new issue while we figure out the best interface. Lets continue to use this issue to resolve any problems that may occur from the core changes.
Henri - thanks for your patience and stamina!
The patch needs to be applied to the Solr source 1.3 dev trunk.
Getting the source is decribed in http://lucene.apache.org/solr/version_control.html (and I suggest you also read the FAQ here http://wiki.apache.org/solr/FAQ ).
Instructions to apply the patch are described in the Jira issue (as well as a description of its applicability & usefulness; are you sure you need this patch?)
Quoted from:
Sorry for the long delay in looking at this...
I got the patch applied to trunk and it appears to be working. I removed the servlet configuration stuff and think we should revist that in a different patch as soon as this monster is commited.
Otis, if you have time to check this out that would be great. has time to check this over before commiting that would be great – otherwise, I'll add it in a few days.
Hi –
Currently I am using SOLR 1.2.0 stable build, and this version does not have this feature (Support for Multiple SOLR cores). How do I get this feature? I tried to open the .patch file but I could not understand. Is there any particular version of SOLR in which I can get this. I also looked in to the file https://svn.apache.org/repos/asf/lucene/solr/trunk/src/java/org/apache/solr/core/SolrCore.java, but this does not contain any changes as this feature mentioned like introduction new SolrCore constructor.
If possible could you please point me to the instructions where I can check out this feature or the latest source and build the SOLR binary.
Thanks in advance.
updated for revision 566269;
added back SolrConfig.config;
cleaned-up o.a.s.handler*
Typically a contributor will try to push a patch as far as he/she can based on committers' comments and suggestions. It sounds like we are all in agreement here and you know exactly what to do, so we'll wait for your next patch and hopefully that will be the one that we can commit. Thank you very much for your patience with this - I'm impressed.
From what I can tell, this is what is left:
1. Remove anything in this patch that touches o.a.s.webapp.* and o.a.s.handler.*
2. Deprecate factory interfaces and add abstract factory base classes as Hoss descibed above
One that's in the repository, I think you/we can take the description you wrote (all the way at the top of this issue) and turn it into a Wiki page (anyone can add/edit pages, just create an account on the Wiki).
I'm eager to try the new patch!
> we can easily 'reinstate' SolrConfig.config by assigning it the 'null' core config as a compatibility (deprecated?)
yes. that is good.
> should I create/upload a new version of the patch with the described modifications or is this taken care of by the committer? (this sounds like a stupid question, my apologies if it is; just let me know).
whatever happens first
If you have time, can you make the modifications. That will make it easier.
About the SolrConfig.config, the replacement is indeed SolrCore.getSolrCore(null).getSolrConfig().
What I meant about the SolrConfig.config not being retained was that there was no way to access through SolrConfig.config the configuration of an arbitrary core;
we can easily 'reinstate' SolrConfig.config by assigning it the 'null' core config as a compatibility (deprecated?) feature; I'd advocate for stating this very clearly (to avoid unexpected side effects in the multi core case).
This should allow a 'default' deployment to work as it was (without the patch).
I like the plan; is there anything expected/needed that I can/should do? 'process-wise', I'm a little confused about the patch status; should I create/upload a new version of the patch with the described modifications or is this taken care of by the committer? (this sounds like a stupid question, my apologies if it is; just let me know).
For the record, I have not looked at the most recent version of the patch – don't think i've ever had a chance to look at any version of this patch actually, but I since my fiance is currently reading harry potter, i figured this was a good day to at least try and catch up on all the issue comments.
so far, i like what i'm reading – i think the plan to first commit the "framework" code so that multiple cores can be programmatic created, then tackle the syntax for defining/creating/querying multiple cores via config files and/or http params makes sense.
As far as the backwards compatibility issues go with things like the Token(izer|Filter)Factory APIs, I think it's safe to say that people who want to use multiple cores can be required to make minor modifications to custom plugins they may have written in order to get them to work correctly with those multiple cores.
what we have to watch out for is people who don't care about custom cores, and have written custom plugins. things should continue to work for those people.
In the case of the token-blah-factories, a simple way to go (which can also help us move away from the interface headache) might be to deprecate the current factory interfaces, and add new abstract factory base classes which implement those interfaces and are multi-core aware ... the initialization code can first check to see if the class name in question extends the new abstract base class – if so then jolly good, if not then fall back to the legacy behavior and init the class without any info about it's core.
the kind of situation i do worry about however is along the lines of a comment Henri pointed out (very early on evidently, not sure how i missed it back then)...
> Although the 'single core' feature has been retained (aka the static SolrCore.getCore),
> the SolrConfig.config could not;
...this is a little alarming, because there may be custom plugins that use SolrConfig.config to get arbitrary configuration inforrmation from solrconfig.xml ... i say may because we've never exactly advertised that as a recommended technique, but that doesn't mean peope aren't doing it. At a minimum we need a well documented replacement for (hopefully something like SolrCore.getSolrCore(null).getSolrConfig() works) but the question that immediately popped into my head was: "if SolrCore.getCore(null) can return 'the null core' why can't SolrCOnfig.config be assigned the config from the null core?"
In general, this is the kind of thing i worry about: making sure that any and all custom plugin code that may exist right now can continue to exist and function using a single core even after the multi-core functionality is committed.
> 1. Re TokenizerFactory - what will break with this change?
Personally, I don't have any problem with it. But is is an API breaking change (a custom 1.2 TokenizerFactory would not work with 1.3).
I am fine with noting that in CHANGES.txt, but we should make sure more people are aware of this change.
> 2. So can SolrUpdateServlet get axed, so SolrInit can be eliminated?
lets not axe SolrUpdateServlet just yet – this patch does not need to touch SolrUpdateServlet and SolrInit can be removed.
> If we can resolve these two, it sounds like we can commit this patch and then work on the rest.
For now, I think we should remove anything in this patch that touches o.a.s.webapp.* and o.a.s.handler.*
With Multiple Solr Cores working, we can bat around the best interface to accessing/modifying them.
Ryan e Henri:
1. Re TokenizerFactory - what will break with this change? Is the fear that people implemented this interface in their Solr apps and this change will break their implementations, or something else?
2. So can SolrUpdateServlet get axed, so SolrInit can be eliminated?
If we can resolve these two, it sounds like we can commit this patch and then work on the rest.
> My suggestion is that this be added in phase 2, after Henri's initial changes are committed.
> Does this sound reasonable?
Yes - perhaps getting this checked in without touching handlers or the web-app side is a good idea. It is a little weird since the multi-core aspect would only be usable programatically, but that will make it possible to easily bat around a 'core manager' and http design.
The one big question is what to do with the TokenizerFactory API.
Yonik, how do you suggest upgrading an interface? The only clean way I can think is to upgrade the TokenizerFactory interface with a 'MulitCoreTokenizerFactory' adding an additional argument. I don't like it, but don't know the API compatibility rules well enough to know if it is required or is ok to change the API.
Will - as is, this patch does not let you dynamically change the core. They are statically defined in web.xml. This will change.
did anything ever get baked into the patch for handling the core name as a cgi param instead of as a url path element? the email thread we had going didn't seem to come to any hard conclusions but i'd like to lobby for it as a part of the spec. i read through the patch but i couldn't quite follow things enough to tell.
I didn't even realize this patch would still require cores to be declared apriori in static files such as web.xml.
I think this new multi-core functionality should come with the "core manager" handler, as we said here:
So, something like:
(this assumes that foo-schema.xml and foo-solrconfig.xml already exist in conf/ dir)
One could also POST this and include the content of the 2 .xml files. In that case the core manager would be the one writing their content to disk in conf/ dir prior to starting the given core.
My suggestion is that this be added in phase 2, after Henri's initial changes are committed.
Does this sound reasonable?
On Otis's comments:
1 & 2- static initializers for lock related value: you are correct, the code has been lost most likely in some merge- my bad.
3- SolrInfoRegistry deprecated: you are correct, functionality is replaced by SolrCore.getSolrCore().getInfoRegistry().
4-classLoader not assigned: not sure why it happens but this fixes it...
5- checkName is not subtle: I had the idea of "normalizing" the core name (url like normalize for instance) but did not pursue since it might make the replication scripts more complex to modify (aka the normalization code would need to be duplicated in the script). And since the solaris scripts were not completely functional (my dev machine being solaris), I've postponed the task... ( I also was "dreaming" about being able to derive from SorlCore to benefit from the static map, implement a naming policy that would encompass the config & schema name generations, etc...). Anyhow, this can indeed be simplified with a regexp match.
6-finalize(): no, I believe finalizing one core should just ensure that this core is shutdown.This is only for completeness though since I cant see how a core could be gc-ed & finalized before it actually gets shutdown & removed from the map of cores.
On Ryan's comments:
1- factory/init interface compatibility break: I'll look into other ways since if this is a blocker (ctor, setter or wrap/delegate...).
2- RequestHandlers know core: SolrUpdateServlet is deprecated but is still there; I was just trying to ensure correct/compatible behavior. I agree SolrInit is more clutter than necessity but can be dropped easily if there is no need to support the SolrUpdateServlet.
3- I do agree that there must be an easier & more functional way to declare and access a core than the current one. I'll try the route you describe.
4- Having core "descriptors" (config/schema) as explicit files in a $solrhome/cores directory; might use some naming convention to derive the core name from them (related to uploading/dynamic creation of cores).
I'm mostly "off the grid" today but I'll try my best on Friday.
I just took a quick (well not so quick in applying the patch) look at this. I have not run it, or tried to use it, just following the changes.
Here are a couple concerns:
1. TokenizerFactory breaks API compatibility:
- public void init(Map<String,String> args);
+ public void init(SolrConfig solrConfig, Map<String,String> args);
I'm not sure the best fix and understand Yonik's aversion to interfaces.
2. Why do RequestHandlers all need to know what core they are from? The core is (and has been) passed along with the request. It looks like the only place it is used is in @deprecated SolrUpdateServlet.
If we only support the multi-core stuff from the dispatch filter, we don't need to augment every request handler with the core that created it.
The 'SolrInit' stuff that works for filters or servlets is nice, but is more confusing then it needs to be if multi-core support were only avaliable from the filter.
3. I'm not sure I like that you have to create a new filter and edit web.xml for each core. If thats the case, why not run multiple web apps? Perhaps the RequestDispatcher could accept ?core=name or look for a path that starts with /core:name/ to choose the core. It would store the 'null' core to avoid a map lookup in the default case.
4. Rather then have each core configured in web.xml, perhaps there should be a core.xml or core.properties file that sits in solr home?
- - - - - -
As for committing this soon. If 1 & 2 are delt with before committing, I'm for it. It will be easier to push around improvements with smaller manageable patches.
I reviewed about 43% of this looooooooooooooooong patch (up to RequestHandlers.java). Everything sees pretty clear so far, the changes are limited to SolrCore and SolrConfig changes. Everything compiles and all test pass - good!
I will review the rest of the patch tomorrow and if there are no surprises, I hope to commit this tomorrow or Friday.
NOTE: If anyone does NOT want this committed this week, please shout!
Here are some comments about the things I saw in the patch so far:
1. src/java/org/apache/solr/update/SolrIndexConfig.java
- if (writeLockTimeout != -1) IndexWriter.WRITE_LOCK_TIMEOUT=writeLockTimeout;
- if (commitLockTimeout != -1) IndexWriter.COMMIT_LOCK_TIMEOUT=commitLockTimeout;
I think the above got lost, but maybe I missed where the timeouts are set now.
2. src/java/org/apache/solr/core/SolrCore.java
- if (mainIndexConfig.writeLockTimeout != -1) IndexWriter.setDefaultWriteLockTimeout(mainIndexConfig.writeLockTimeout);
Same as above - this might have gotten lost.
3. Why is SolrInfoRegistry deprecated? Because it is no longer really needed and its functionality is replaced by SolrCore.getSolrCore().getInfoRegistry()? Just checking.
4. src/java/org/apache/solr/core/Config.java
- classLoader = Thread.currentThread().getContextClassLoader();
+ // NB5.5/win32/1.5_10: need to go thru local var or classLoader is not set!
+ ClassLoader loader = Thread.currentThread().getContextClassLoader();
Ah, NetBeans problem that you mentioned earlier. This is just a local var being set, looks fine to me.
5. src/java/org/apache/solr/core/SolrCore.java
private static String checkName(String name)
Couldn't the implementation of this checkName(name) method be simpler? Aren't there String methods that will let you look for '/' or any other unwanted string/pattern?
Also, why does this method return a name when it doesn't modify it? Wouldn't void or boolean without the exception be more straight forward?
protected void finalize()
Shouldn't this finalize() method call shutdown() in order to close all cores?
previous patch version was missing SolrInit & AnalysisTestCase; sorry Otis
Henri - is SolrInit something that you added in this patch or something that Solr once had? I don't recall seeing SolrInit.java before, so I'm guessing you added SolrInit.java in your patch. However, your patch does not contain SolrInit.java (forgot to svn add it?), so things don't compile even when using the latest .zip (.gz really) and the correct Solr revision:
[javac] Compiling 5 source files to /home/otis/dev/repos/lucene/solr/foo/trunk/build/core
[javac] /home/otis/dev/repos/lucene/solr/foo/trunk/src/webapp/src/org/apache/solr/servlet/SolrDispatchFilter.java:69: cannot find symbol
[javac] symbol : class SolrInit
[javac] location: class org.apache.solr.servlet.SolrDispatchFilter
[javac] SolrInit solrInit = new SolrInit(log) {
[javac] ^
[javac] /home/otis/dev/repos/lucene/solr/foo/trunk/src/webapp/src/org/apache/solr/servlet/SolrDispatchFilter.java:69: cannot find symbol
[javac] symbol : class SolrInit
[javac] location: class org.apache.solr.servlet.SolrDispatchFilter
[javac] SolrInit solrInit = new SolrInit(log) {
[javac] ^
[javac] /home/otis/dev/repos/lucene/solr/foo/trunk/src/webapp/src/org/apache/solr/servlet/SolrServlet.java:49: cannot find symbol
[javac] symbol : class SolrInit
[javac] location: class org.apache.solr.servlet.SolrServlet
[javac] SolrInit solrInit = new SolrInit(log) {
[javac] ^
[javac] /home/otis/dev/repos/lucene/solr/foo/trunk/src/webapp/src/org/apache/solr/servlet/SolrServlet.java:49: cannot find symbol
[javac] symbol : class SolrInit
[javac] location: class org.apache.solr.servlet.SolrServlet
[javac] SolrInit solrInit = new SolrInit(log) {
[javac] ^
[javac] /home/otis/dev/repos/lucene/solr/foo/trunk/src/webapp/src/org/apache/solr/servlet/SolrUpdateServlet.java:48: cannot find symbol
[javac] symbol : class SolrInit
[javac] location: class org.apache.solr.servlet.SolrUpdateServlet
[javac] SolrInit solrInit = new SolrInit(log) {
[javac] ^
[javac] /home/otis/dev/repos/lucene/solr/foo/trunk/src/webapp/src/org/apache/solr/servlet/SolrUpdateServlet.java:48: cannot find symbol
[javac] symbol : class SolrInit
[javac] location: class org.apache.solr.servlet.SolrUpdateServlet
[javac] SolrInit solrInit = new SolrInit(log) {
[javac] ^
[javac] Note: /home/otis/dev/repos/lucene/solr/foo/trunk/src/webapp/src/org/apache/solr/servlet/SolrUpdateServlet.java uses or overrides a deprecated API.
[javac] Note: Recompile with -Xlint:deprecation for details.
[javac] 6 errors
Could you please add SolrInit.java to the patch? I'd like to give this a go as soon as possible, actually.
Just a quick comment - the .zip version of the patch is really a gzipped file:
$ wget --quiet https://issues.apache.org/jira/secure/attachment/12361583/solr-215.patch.zip
$ file solr-215.patch.zip
solr-215.patch.zip: gzip compressed data, was "solr-215.patch", from Unix
You need to grab the 'zipped' version aka solr-215.patch.zip (since June 23).
I was trying to be space & bandwidth friendly...
Sorry I did not make it more obvious in some previous comments.
Henri, I'm starting to suspect I'm doing something wrong here:
svn co -r 555252 https://svn.apache.org/repos/asf/lucene/solr/trunk
cd trunk
svn info
Path: .
URL: https://svn.apache.org/repos/asf/lucene/solr/trunk
Repository UUID: 13f79535-47bb-0310-9956-ffa450edef68
Revision: 555252
Node Kind: directory
Schedule: normal
Last Changed Author: ryan
Last Changed Rev: 554915
Last Changed Date: 2007-07-10 13:57:36 +0200 (Tue, 10 Jul 2007)
Properties Last Updated: 2007-07-11 17:48:55 +0200 (Wed, 11 Jul 2007)
wget https://issues.apache.org/jira/secure/attachment/12360039/solr-215.patch
patch -p0 < solr-215 &> patch.out
$ grep .rej$ patch.out
1 out of 2 hunks FAILED – saving rejects to file src/test/org/apache/solr/update/AutoCommitTest.java.rej
1 out of 3 hunks FAILED – saving rejects to file src/test/org/apache/solr/analysis/TestKeepWordFilter.java.rej
1 out of 2 hunks FAILED – saving rejects to file src/test/org/apache/solr/handler/XmlUpdateRequestHandlerTest.java.rej
2 out of 13 hunks FAILED – saving rejects to file src/java/org/apache/solr/schema/IndexSchema.java.rej
1 out of 1 hunk FAILED – saving rejects to file src/java/org/apache/solr/analysis/PhoneticFilter.java.rej
1 out of 14 hunks FAILED – saving rejects to file src/java/org/apache/solr/search/SolrIndexSearcher.java.rej
3 out of 17 hunks FAILED – saving rejects to file src/java/org/apache/solr/core/SolrCore.java.rej
4 out of 7 hunks FAILED – saving rejects to file src/java/org/apache/solr/core/RequestHandlers.java.rej
2 out of 2 hunks FAILED – saving rejects to file src/java/org/apache/solr/handler/XmlUpdateRequestHandler.java.rej
1 out of 1 hunk FAILED – saving rejects to file src/java/org/apache/solr/util/TestHarness.java.rej
Am I doing something wrong?
updated for trunk 555252; should apply cleanly now (a few fuzzies but no rejects).
About backwards compatibility & named cores, the 'null' core (ie the core named 'null') is equivalent to the (non-solr215-patched) original version; SolrCore.getSolrCore() returns that core.
Besides the obvious SolrConfig.config that has been removed, I dont (fore)see any other non-compatible behaviors.
I don't know if we should make Henri keep his patch up to date with the trunk (since it's likely to continue evolving right now) until he's received more feedback about the approach and we are ready to commit it.
One question I had was about backward compatibility... is there a way to register a null or default core that reverts to the original paths? Are there any other backward compatible gotchas (not related to custom java code)?
I've finally started looking at this. The latest version of the patch doesn't apply 100% cleanly (e.g. src/java/org/apache/solr/handler/StaxUpdateRequestHandler.java has been replaced by src/java/org/apache/solr/handler/XppUpdateRequestHandler.java) and thus 'ant compile' results in several compilation errors. You can probably see the same locally, but just in case it make it easier for you, here is how patching looks for me:
[otis@localhost trunk]$ patch -p0 < solr-215.patch
patching file src/test/org/apache/solr/update/AutoCommitTest.java
Hunk #1 FAILED at 55.
1 out of 2 hunks FAILED – saving rejects to file src/test/org/apache/solr/update/AutoCommitTest.java.rej
patching file src/test/org/apache/solr/analysis/TestBufferedTokenStream.java
patching file src/test/org/apache/solr/analysis/TestPatternReplaceFilter.java
patching file src/test/org/apache/solr/analysis/TestPhoneticFilter.java
patching file src/test/org/apache/solr/analysis/AnalysisTestCase.java
patching file src/test/org/apache/solr/analysis/TestPatternTokenizerFactory.java
patching file src/test/org/apache/solr/analysis/TestRemoveDuplicatesTokenFilter.java
patching file src/test/org/apache/solr/analysis/TestKeepWordFilter.java
Hunk #1 FAILED at 27.
1 out of 3 hunks FAILED – saving rejects to file src/test/org/apache/solr/analysis/TestKeepWordFilter.java.rej
patching file src/test/org/apache/solr/analysis/BaseTokenTestCase.java
patching file src/test/org/apache/solr/servlet/SolrRequestParserTest.java
patching file src/test/org/apache/solr/servlet/DirectSolrConnectionTest.java
patching file src/test/org/apache/solr/core/TestConfig.java
patching file src/test/org/apache/solr/core/SolrCoreTest.java
patching file src/test/org/apache/solr/core/RequestHandlersTest.java
patching file src/test/org/apache/solr/core/TestBadConfig.java
patching file src/test/org/apache/solr/schema/BadIndexSchemaTest.java
patching file src/test/org/apache/solr/schema/NotRequiredUniqueKeyTest.java
patching file src/test/org/apache/solr/schema/RequiredFieldsTest.java
patching file src/test/org/apache/solr/schema/IndexSchemaTest.java
patching file src/test/org/apache/solr/BasicFunctionalityTest.java
patching file src/test/org/apache/solr/handler/StandardRequestHandlerTest.java
patching file src/test/org/apache/solr/handler/XmlUpdateRequestHandlerTest.java
Hunk #2 FAILED at 13.
1 out of 2 hunks FAILED – saving rejects to file src/test/org/apache/solr/handler/XmlUpdateRequestHandlerTest.java.rej
patching file src/test/org/apache/solr/handler/MoreLikeThisHandlerTest.java
patching file src/java/org/apache/solr/schema/IndexSchema.java
Hunk #2 succeeded at 57 (offset 1 line).
Hunk #4 succeeded at 294 (offset 1 line).
Hunk #5 FAILED at 303.
Hunk #6 succeeded at 314 with fuzz 2.
Hunk #7 FAILED at 327.
Hunk #8 succeeded at 458 (offset 3 lines).
Hunk #10 succeeded at 593 (offset 3 lines).
Hunk #12 succeeded at 617 (offset 3 lines).
2 out of 13 hunks FAILED – saving rejects to file src/java/org/apache/solr/schema/IndexSchema.java.rej
patching file src/java/org/apache/solr/update/UpdateHandler.java
patching file src/java/org/apache/solr/update/DirectUpdateHandler2.java
Hunk #1 succeeded at 607 (offset 11 lines).
patching file src/java/org/apache/solr/update/SolrIndexConfig.java
patching file src/java/org/apache/solr/analysis/PatternTokenizerFactory.java
patching file src/java/org/apache/solr/analysis/TokenizerFactory.java
patching file src/java/org/apache/solr/analysis/PatternReplaceFilterFactory.java
patching file src/java/org/apache/solr/analysis/BaseTokenFilterFactory.java
patching file src/java/org/apache/solr/analysis/TrimFilterFactory.java
patching file src/java/org/apache/solr/analysis/KeepWordFilterFactory.java
patching file src/java/org/apache/solr/analysis/TokenFilterFactory.java
patching file src/java/org/apache/solr/analysis/EnglishPorterFilterFactory.java
Hunk #2 succeeded at 33 with fuzz 1.
patching file src/java/org/apache/solr/analysis/PhoneticFilterFactory.java
patching file src/java/org/apache/solr/analysis/WordDelimiterFilterFactory.java
patching file src/java/org/apache/solr/analysis/SynonymFilterFactory.java
Hunk #2 succeeded at 31 with fuzz 1.
patching file src/java/org/apache/solr/analysis/SnowballPorterFilterFactory.java
patching file src/java/org/apache/solr/analysis/EdgeNGramTokenizerFactory.java
patching file src/java/org/apache/solr/analysis/PhoneticFilter.java
Hunk #1 FAILED at 28.
1 out of 1 hunk FAILED – saving rejects to file src/java/org/apache/solr/analysis/PhoneticFilter.java.rej
patching file src/java/org/apache/solr/analysis/LengthFilterFactory.java
patching file src/java/org/apache/solr/analysis/StopFilterFactory.java
Hunk #2 succeeded at 32 with fuzz 1.
patching file src/java/org/apache/solr/analysis/NGramTokenizerFactory.java
patching file src/java/org/apache/solr/analysis/BaseTokenizerFactory.java
patching file src/java/org/apache/solr/search/SolrIndexSearcher.java
Hunk #10 FAILED at 261.
Hunk #11 succeeded at 329 (offset 1 line).
Hunk #13 succeeded at 589 (offset 1 line).
Hunk #14 succeeded at 979 (offset 1 line).
1 out of 14 hunks FAILED – saving rejects to file src/java/org/apache/solr/search/SolrIndexSearcher.java.rej
patching file src/java/org/apache/solr/search/CacheConfig.java
Hunk #1 succeeded at 37 with fuzz 2.
patching file src/java/org/apache/solr/search/DocSetHitCollector.java
patching file src/java/org/apache/solr/core/SolrInfoRegistry.java
patching file src/java/org/apache/solr/core/Config.java
Hunk #1 succeeded at 44 with fuzz 2.
patching file src/java/org/apache/solr/core/SolrConfig.java
Hunk #2 succeeded at 44 with fuzz 2.
patching file src/java/org/apache/solr/core/SolrCore.java
Hunk #2 FAILED at 75.
Hunk #3 succeeded at 144 (offset 2 lines).
Hunk #5 succeeded at 177 (offset 2 lines).
Hunk #6 succeeded at 185 with fuzz 2.
Hunk #7 succeeded at 349 (offset 6 lines).
Hunk #9 succeeded at 479 (offset 13 lines).
Hunk #11 succeeded at 629 (offset 13 lines).
Hunk #13 succeeded at 768 (offset 13 lines).
Hunk #15 succeeded at 876 (offset 13 lines).
Hunk #16 FAILED at 896.
Hunk #17 FAILED at 906.
3 out of 17 hunks FAILED – saving rejects to file src/java/org/apache/solr/core/SolrCore.java.rej
patching file src/java/org/apache/solr/core/RequestHandlers.java
Hunk #1 FAILED at 45.
Hunk #3 FAILED at 128.
Hunk #4 FAILED at 153.
Hunk #5 FAILED at 193.
Hunk #6 succeeded at 201 with fuzz 1 (offset -23 lines).
4 out of 7 hunks FAILED – saving rejects to file src/java/org/apache/solr/core/RequestHandlers.java.rej
patching file src/java/org/apache/solr/core/AbstractSolrEventListener.java
patching file src/java/org/apache/solr/core/QuerySenderListener.java
Hunk #1 succeeded at 31 with fuzz 1.
patching file src/java/org/apache/solr/core/RunExecutableListener.java
patching file src/java/org/apache/solr/request/XSLTResponseWriter.java
patching file src/java/org/apache/solr/request/StandardRequestHandler.java
patching file src/java/org/apache/solr/request/DisMaxRequestHandler.java
patching file src/java/org/apache/solr/tst/OldRequestHandler.java
patching file src/java/org/apache/solr/tst/TestRequestHandler.java
patching file src/java/org/apache/solr/handler/RequestHandlerBase.java
patching file src/java/org/apache/solr/handler/CSVRequestHandler.java
patching file src/java/org/apache/solr/handler/StandardRequestHandler.java
Hunk #1 succeeded at 61 (offset 1 line).
patching file src/java/org/apache/solr/handler/admin/PropertiesRequestHandler.java
patching file src/java/org/apache/solr/handler/admin/LukeRequestHandler.java
Hunk #1 succeeded at 43 (offset 1 line).
Hunk #2 succeeded at 85 (offset -1 lines).
patching file src/java/org/apache/solr/handler/admin/PluginInfoHandler.java
patching file src/java/org/apache/solr/handler/admin/ThreadDumpHandler.java
patching file src/java/org/apache/solr/handler/admin/SystemInfoHandler.java
can't find file to patch at input line 2931
Perhaps you used the wrong -p or --strip option?
The text leading up to this was:
|Index: src/java/org/apache/solr/handler/StaxUpdateRequestHandler.java
|— src/java/org/apache/solr/handler/StaxUpdateRequestHandler.java (revision 548274)
|+++ src/java/org/apache/solr/handler/StaxUpdateRequestHandler.java (working copy)
File to patch: src/java/org/apache/solr/handler/StaxUpdateRequestHandler.java
src/java/org/apache/solr/handler/StaxUpdateRequestHandler.java: No such file or directory
Skip this patch? [y]
Skipping patch.
1 out of 1 hunk ignored
patching file src/java/org/apache/solr/handler/XmlUpdateRequestHandler.java
Hunk #1 FAILED at 51.
Hunk #2 FAILED at 102.
2 out of 2 hunks FAILED – saving rejects to file src/java/org/apache/solr/handler/XmlUpdateRequestHandler.java.rej
patching file src/java/org/apache/solr/handler/SpellCheckerRequestHandler.java
patching file src/java/org/apache/solr/handler/DisMaxRequestHandler.java
Hunk #1 succeeded at 158 (offset 1 line).
patching file src/java/org/apache/solr/handler/DumpRequestHandler.java
patching file src/java/org/apache/solr/handler/MoreLikeThisHandler.java
Hunk #1 succeeded at 71 (offset 1 line).
patching file src/java/org/apache/solr/util/AbstractSolrTestCase.java
patching file src/java/org/apache/solr/util/TestHarness.java
Hunk #1 FAILED at 74.
1 out of 1 hunk FAILED – saving rejects to file src/java/org/apache/solr/util/TestHarness.java.rej
patching file src/java/org/apache/solr/util/xslt/TransformerProvider.java
patching file src/webapp/WEB-INF/web.xml
patching file src/webapp/src/org/apache/solr/servlet/SolrInit.java
patching file src/webapp/src/org/apache/solr/servlet/SolrServlet.java
patching file src/webapp/src/org/apache/solr/servlet/SolrDispatchFilter.java
patching file src/webapp/src/org/apache/solr/servlet/SolrUpdateServlet.java
patching file src/webapp/src/org/apache/solr/servlet/SolrRequestParsers.java
patching file src/webapp/src/org/apache/solr/servlet/DirectSolrConnection.java
patching file src/webapp/resources/admin/raw-schema.jsp
patching file src/webapp/resources/admin/_info.jsp
patching file src/webapp/resources/admin/get-file.jsp
patching file src/webapp/resources/admin/ping.jsp
patching file src/webapp/resources/admin/stats.jsp
patching file src/webapp/resources/admin/index.jsp
patching file example/solr/conf/core0.schema.xml
patching file example/solr/conf/core1.schema.xml
patching file example/solr/conf/core0.config.xml
patching file example/solr/conf/core1.config.xml
patching file client/java/solrj/test/org/apache/solr/client/solrj/embedded/TestEmbeddedSolrServer.java
patching file client/java/solrj/test/org/apache/solr/client/solrj/embedded/TestJettySolrRunner.java
patching file client/java/solrj/src/org/apache/solr/client/solrj/embedded/EmbeddedSolrServer.java
Thanks Walter.
I've been "fighting" a bit with this code in the same kind of environment (NB5.5 / JVM 1.5).
The static classLoader was not assigned correctly and I already had to modify the original code to workaround it.
Looks like the JVM 1.6 reintroduces the issue. I don't understand why this happens - may be class loading through NB...
The fix you propose seems totally harmless; I'll check against a 1.5 JVM & introduce it in the next upload.
Using the patch should be straightforward besides handler classes needing a constructor with a SolrCore.
Let me know how it goes.
By using the patch, (assuming I'm using it correctly), it seems that Solr is not able anymore to load my handlers, which resides in a jar under solr/lib dir. The exception I've got is (handler class name censored):
GRAVE: org.apache.solr.common.SolrException: Error loading class 'com.*****.*****'
at org.apache.solr.core.Config.findClass(Config.java:295)
Caused by: java.lang.ClassNotFoundException: com.*****.*****
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
(full stack trace available if needed)
The problem arise in both patched trunk I've tested (550264 with previous patch, and 552910 with latest patch), I've been compiling it using Netbeans 5.5 and java1.6 on windows.
To resolve the issue, I modified a bit the Config.java. Now it works fine, it loads all the jars, but full implication of the change I made have to be determined.
Here the modification I made on patched (org.apache.solr.core) Config.java (working Config.java versus original solr-215 "Config_solr215.java")
- Config.java
- Config_origSolr215.java
- 393,399 ****
SolrException.log(log,"Can't construct solr lib class loader", e);
! if (null == classLoader) classLoader = loader;
return classLoader;
- 393,399 ----
SolrException.log(log,"Can't construct solr lib class loader", e);
! classLoader = loader;
return classLoader;
updated for trunk 550264
patch is zipped; solr-215.patch.zip
About solr-255, I've posted a small comment to Toru.
Seems to me that solr-255/solr-215 features are mostly orthogonal; solr-255 allows one core to use multiple indexes, solr-215 allows multiple cores in one instance.
But I like the idea of federated search (and federated indexing!).
I'm a bit worried though that adding a Lucene patch dependency & merging solr-215/solr-255 will make the commit occur even later... And I'm getting confused; how could this fusion help reduce the amount of effort to review the patch?
But I'll follow your lead; I'll try & see if I can merge.
Excellent. I'll assume you'll add something like this to your patch, then.
Any thoughs on
SOLR-255 and ensuring you and Toru don't step on each other's toes?
I like the suggestion. Thanks Otis.
The specific admin handler is definitely a good idea to handle cores (no need to modify the servlet dispatch filter).
Could definitely use a naming convention and/or specify schema & config as parameters as in:
It does not preclude being able to upload the schema & config files (so the files dont have to be there before).
Henri, question about this:
Uploading new schema/conf would be nice, allowing Solr to create cores dynamically; the upload mechanism itself is easy, the servlet dispatch filter needs to be modified.
Wouldn't one simply way to get dynamic SolrCore creation be via custom/specific admin request handlers that create a core with the given name by adding it to that static map of cores that you've created?
Maybe a naming convention could be used to figure out which schema.xml + solrconfig.xml to use for the newly added core. e.g. foo-schema.xml and foo-solrconfig.xml. The assumption would be that when the new core is added, the needed config files are already in place and ready to be loaded.
Thoughts anyone?
Henri, I think Toru is doing something useful in
SOLR-255 - FederatedSearch over RMI + support for multiple local indices. I think your work is overlapping a lot and you two need to sync, either working on a single patch or on multiple smaller patches with serial dependency.
update to current trunk; patch generated from a Solaris Express 10 box.
New version of the patch that should be easier to verify.
Created with: svn diff --diff-cmd /usr/bin/diff -x "-w -B -b -E -N -u" > ~/solr-215.patch
Verified it can be applied on clean trunk through: patch -u -p0 < ~/solr-215.patch
Thanks Mike for your usefull advice;
I've corrected the (modified) tests so they are now behaving as the non-patched version do (aka no error nor failure, 133 tests); there were still some of them using the 'unnamed/null' core. My bad, thanks again for pointing it out.
The 'superseding' patch is now called solr-215.patch so JIRA should take care of keeping only the last version. (all others can be ignored & deleted).
This drop is based on svn revision 543145.
I haven't looked at the patch, but:
- there are no current failures on trunk, save from a sporatic AutoCommitTest failure if the machine is heavily-loaded. Are you testing this patch in the context of other local changes?
- if you maintain the same name for subsequent versions of the patch, JIRA automatically keeps track of the most recent for you
- personally, I find it helpful to check out a fresh copy of trunk and apply my patch and run the tests there. It helps ferret out the problematic issues and oversights.
Supersedes previous patches (including solr-trunk-542847.patch); all other attached patches should be ignored (& removed by anyone with proper permissions?).
Forgot to svn add some new files before creating the patch;
fixed a stupid logic error in SolrInit when parameters were missing;
added a way to get to the config & schema file names from a configured core.
A revised version of the patch based on revision 542847.
The patch was produced with the following command run from trunk directory:
svn diff --diff-cmd /usr/bin/diff -x "-w -B -b -E -d -N" > solr-trunk-542847.patch
This should take care of the white spaces as well as inclusion of new files.
All unit tests behave as in the single core version; 133 tests, 5 failures, 0 errors
The content of the patch also includes modifications to the admin, servlet & filters to accomodate the declaration & handling of multiple cores. The example conf & web.xml have been modified to declare 2 other cores (besides the default) named 'core0' and 'core1'.
The filter itself forwards to the proper servlet if no specific handler exists in the core configuration.
java -Durl='http://localhost:8983/solr/core0/update' -jar post.jar solr.xml monitor.ml
Will index the 2 documents in solr.xml & monitor.xml
Will produce the statistics page from the admin servlet on core0 index; 2 documents
Will produce the statistics page from the admin servlet on core1 index; no documents
java -Durl='http://localhost:8983/solr/core0/update' -jar post.jar ipod*.xml
java -Durl='http://localhost:8983/solr/core1/update' -jar post.jar mon*.xml
Adds the ipod*.xml to index of core0 and the mon*.xml to the index of core1;
running queries from the admin interface, you can verify indexes have different content.
Comments & advice welcome.
Henri - I'm starting to ook at this. I see a lot of space changes in the patch. Could you please generate a patch that doesn't have all those space changes?
When you generate a diff file for the patch, these may be handy parameters to use (I'm assuming you're going work under some kind of UNIX)
-E --ignore-tab-expansion
Ignore changes due to tab expansion.
-b --ignore-space-change
Ignore changes in the amount of white space.
-w --ignore-all-space
Ignore all white space.
-B --ignore-blank-lines
Ignore changes whose lines are all blank.
I just skimmed the patch and didn't see where the name of the index/core gets passed in the request. Can you please point me to the right place to look?
I think Henri accidentally resolved this. Reopening.
Btw. I'm very interested in serving multiple indices under a single Solr instance, possibly even embedded as described on the wiki or in
SOLR-212. I may not find the time to look at the patch before next week, though.
The patch as it stands still requires some refactoring 'above' the Java core.
Although the 'single core' feature has been retained (aka the static SolrCore.getCore), the SolrConfig.config could not; the admin servlet has been modified accordingly.
Updated patch based on latest trunk.

subset: commoncrawl