Saturday, September 3, 2011

FAST Search Server 2010 SP1

Topic: SharePoint 2010 SP1, FS4SP SP1, Fast Search Server 2010 SP1
Subject:  Upgrading to FS4SP SP1
Problem: I applied FAST Search for SharePoint 2010 SP1 and everything has gone wrong. I have lost my pipeline customizations, my Customer Extensibility, and even my high density mode.  What did I do wrong?
Response: I know I have been missing for a while but as the adoption of FS4SP has been moving out of infancy stage I have been really busy.  With the addition of SP1 I had to find the time.   If you are planning to upgrade to SP1 you need to stop and think really hard.   I have many customers who have run into issues with SP1.  Not with the service pack itself but with the impact of applying it.  To better explain the problems and techniques to avoid issues I will use the Solution\Example section of how to get into trouble and how to avoid trouble.  If you are running a base installation you will probably not run into trouble but it is worth understanding how FS4SP SP1 is installed and configured.

Side Note:  SharePoint 2010 SP1 though I haven’t had issues has its’ own quirk.  Every SharePoint CU immediately lets you know to run the configuration wizard after applying the update, SP1 inadvertently does not.   By habit I perform the task because what is it going to hurt. (i.e. no negative effect).   If you do not run the configuration wizard everything will appear well until we look under the hood and discover our Database schema is not up to date. For SharePoint 2010 SP1:
1.      Install the equivalent SharePoint Foundation SP1
a.      Though running SharePoint 2010 not everything is running without Foundation.
b.      If this is in dispute, it doesn’t hurt.  (i.e. don’t argue, if in actuality if doesn’t affect your implementation you have wasted 5 minutes)

2.      Apply SharePoint 2010 SP1

3.      Run the SharePoint configuration Wizard on all servers starting with the Central Administration Server (CA)

Solution\Example:
1.      In this example we will use CustomerExtensibility section of the FS4SP pipeline to show the flaws in SP1 implementation

2.      Modify the Customer Extensibility section of the FS4SP Pipeline
a.      Using Windows Explorer navigate to <FAST Search Install Drive>\FASTSearch\etc
b.      Open the file pipelineextensibility.xml in notepad.
c.      Duplicate the Commented out Example Section.
d.      From:

<PipelineExtensibility>
    <!--
    <Run command="binary.exe %(input)s %(output)s">
        <Input>
            <CrawledProperty propertySet="" varType="" propertyId=""/>
            <CrawledProperty propertySet="" varType="" propertyName=""/>
            <CrawledProperty propertySet="" varType="" propertyName=""/>
        </Input>
        <Output>
            <CrawledProperty propertySet="" varType="" propertyName=""/>
            <CrawledProperty propertySet="" varType="" propertyName="" defaultValue=""/>
        </Output>
    </Run>
    -->
</PipelineExtensibility>

e.      To:
<PipelineExtensibility>
    <!--
    <Run command="binary.exe %(input)s %(output)s">
        <Input>
            <CrawledProperty propertySet="" varType="" propertyId=""/>
            <CrawledProperty propertySet="" varType="" propertyName=""/>
            <CrawledProperty propertySet="" varType="" propertyName=""/>
        </Input>
        <Output>
            <CrawledProperty propertySet="" varType="" propertyName=""/>
            <CrawledProperty propertySet="" varType="" propertyName="" defaultValue=""/>
        </Output>
    </Run>
    -->
   <!--
    <Run command="binary.exe %(input)s %(output)s">
        <Input>
            <CrawledProperty propertySet="" varType="" propertyId=""/>
            <CrawledProperty propertySet="" varType="" propertyName=""/>
            <CrawledProperty propertySet="" varType="" propertyName=""/>
        </Input>
        <Output>
            <CrawledProperty propertySet="" varType="" propertyName=""/>
            <CrawledProperty propertySet="" varType="" propertyName="" defaultValue=""/>
        </Output>
    </Run>
    -->
</PipelineExtensibility>

f.       We are merely adding an additional commented out section for this example but it will suffice.

3.      Apply the FS4SP SP1 bits by downloading (http://technet.microsoft.com/en-us/enterprisesearch/gg176677.aspx) and running the installation.

4.      Open a FAST Command Shell as Administrator

a.      Navigate to the <FAST Install Drive>\FASTSearch\Installer\Scripts directory

b.      Execute> psconfig.ps1 –action P
                                                    i.     Stands for Configuration with action PATCH

5.      When the process completes edit the PipelineExtensibility.xml following Step #2.

6.      What happened? The additional commented section is gone.

a.      The upgrade path for SP1 is not very sensitive. (An appropriate word)

b.      Let’s take a look at what happened.

7.      Navigate to the <FAST Install Drive>\FASTSearch\Installer\Scripts directory.
a.      Open psconfig.ps1 in notepad

b.      GoTo line 201

        Write-Host ".\psconfig.ps1 -action p"
        Write-Host "After installing a patch or service pack, run this action to re-configure the installation. " –NoNewline

c.      Ok, did that correctly.  Move to line 913.

d.      A lot of wording but in summary
                                                    i.     Stop the FAST Service
                                                   ii.     CopyDefaultTemplates
                                                  iii.     Set-FASTSearchConfiguration
                                                  iv.     Start the FAST Service

e.      I, iii, & iv. Harmless but what about CopyDefaultTemplates?

8.      When applying SP1 the FS4SP bits are upgraded but if we following the patch directions which include copying the default templates we are going to end up with exactly that: the default templates.  PipelineExtensibility happens to be one of these default templates.  SP1 not only installs the bits but also includes a new set of templates. Some in theory could change but the SP gives a whole new set whether changed or not.

9.      Losing the CustomerExtensibility is not a big deal as we can easily re-implement the changes after applying SP1 but what happens if we have taken FS4SP from standard density mode to high density mode.

a.      The answer is we would have just re-versed the high density mode back to standard density.  This could be a big problem if we applied SP1 with more than 30M items indexed.  We have a different number of index partitions and the load would have to be re-allocated.  The default Column contains 5 partitions with 6M items per column. TechNet says to split a column at 15M but in actuality OOB it is configured to hold 30M.
Side Note:  View <FAST Install Drive>\FASTSearch\etc\config_data\RTSearch\webcluster\rtsearchrc.xml to see the default configuration for an index column.

10.   So how do we avoid this?

11.   There are a couple of solutions to the problem (I will let the user decide how they want to handle the issue)
a.      Run each step of the Patch process manually from the FAST Command Shell.
                                                    i.     Stop the FAST Node (nctrl stop)

                                                   ii.     Run the CopyDefault Templates

                                                  iii.     Re-Implement any customization.

                                                  iv.     Run the Set-FASTSearchConfiguration command

                                                   v.     Start the FAST Node (nctrl start)

b.      Modify the psconfig.ps1 (located under FASTSearch\installer\scripts)

                                                    i.     Add a pause in the psconfig.ps1 configuration script between the CopyDefaultTemplates and Set-FASTSearchConfiguration command to allow time to re-implement changes before the configuration is set.

c.      Find the Default Templates and implement our changes after installing the patch but before running the psconfig.ps1 patch command.

12.   From the windows explorer
a.      Navigate to the <FAST Install Drive>\FASTSearch\Metadata\config\profiles\default

b.      Found them! They are all here in one directory or another.

c.      Navigate further to \static\etc.  Here is the home of the pipelineextensibility.

d.      The default profile is the location of the templates which will be copied when running the psconfig patch command.

e.      Modify the pipelineextensibility.xml file as in Step #2.

13.   Re-Run the psconfig.ps1 –action P as in step #4.
a.      Fortunately for us (or this blog) the upgrade path is not smart enough to recognize that the SP1 patch has already been applied.

14.   Re-verify the results in the <FAST Install Drive>\etc\pipelineextensibility.xml files.
a.      The modification is there.

Conclusion:
FS4SP SP1 may take care of issues but it can cause a lot of un-intended issues.  If you are implementing a detailed Enterprise Search Solution which includes customizations such as High Density Mode, pipeline changes, or CustomerExtensibility you need to understand the upgrade path.  Anything that has been customized needs to be well thought out if you are going to implement a Patch in FS4SP.

KORITFW

1 comment:

  1. Good post! One would think the best option was to run the backup and restore scripts in configuration mode, but they skip the pipeline extensibility config :(

    You could however run the included backup script with the "excludeindex" switch, and then move back the files you have changed.

    But still, the most important part is to record any file you have edited, and check them after applying a CU or SP to make sure everything is in order. An in a big installation this is even more tedious, as you have to repeat everything.

    I think modifying the default templates as you suggest might be the easiest solution.

    ReplyDelete