Custom Http Handler Factory and Possible Concurrency Issues on Application Start

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Jordan S.

    Custom Http Handler Factory and Possible Concurrency Issues on Application Start

    Using .NET 3.5...

    1. Will ASP.NET guarantee that no more than ONE instance of a custom HTTP
    handler factory (class implementing IHttpHandlerFac tory) is ever created in
    an ASP.NET application?

    2. Assuming the answer to #1 is "yes - never more than one instance" (I hope
    that's true), then does ASP.NET automatically take care of concurrency with
    respect to accessing that one instance?

    My situation is that I have written a custom handler factory. In it's
    constructor, I initialize a couple of class-scoped collections that are
    subsequently used by logic called by the factory's GetHandler() method.

    I am concerned that when the app is restarted (for whatever reason), and if
    the site is really busy, multiple requests could arrive simultaneously (or
    close enough to cause concurrency problems) while my custom factory is
    initializing itself. Is there anything I can or should do to avoid race
    conditions or other such concurrency problems - or will ASP.NET queue the
    requests until the factory is ready to serve all of the queued requests?

    I have observed that my custom factory is not instantiated until the first
    request arrives (after an IIS or application restart)... thus my concern -
    what if 100 requests arrive all at once and the factory isn't yet
    instantiated and initialized?

    Thanks.



  • Juan T. Llibre

    #2
    Re: Custom Http Handler Factory and Possible Concurrency Issues on Application Start

    re:
    !what if 100 requests arrive all at once

    You mean if 100 requests arrive within the same 10,000th of one second ?
    I'd find it very difficult to see that happening.



    Juan T. Llibre, asp.net MVP
    asp.net faq : http://asp.net.do/faq/
    foros de asp.net, en español : http://asp.net.do/foros/
    =============== =============== ========
    "Jordan S." <A@B.comwrote in message news:etdJ7JMxIH A.3968@TK2MSFTN GP04.phx.gbl...
    Using .NET 3.5...
    >
    1. Will ASP.NET guarantee that no more than ONE instance of a custom HTTP handler factory (class implementing
    IHttpHandlerFac tory) is ever created in an ASP.NET application?
    >
    2. Assuming the answer to #1 is "yes - never more than one instance" (I hope that's true), then does ASP.NET
    automatically take care of concurrency with respect to accessing that one instance?
    >
    My situation is that I have written a custom handler factory. In it's constructor, I initialize a couple of
    class-scoped collections that are subsequently used by logic called by the factory's GetHandler() method.
    >
    I am concerned that when the app is restarted (for whatever reason), and if the site is really busy, multiple requests
    could arrive simultaneously (or close enough to cause concurrency problems) while my custom factory is initializing
    itself. Is there anything I can or should do to avoid race conditions or other such concurrency problems - or will
    ASP.NET queue the requests until the factory is ready to serve all of the queued requests?
    >
    I have observed that my custom factory is not instantiated until the first request arrives (after an IIS or
    application restart)... thus my concern - what if 100 requests arrive all at once and the factory isn't yet
    instantiated and initialized?
    >
    Thanks.
    >
    >

    Comment

    • Jordan S.

      #3
      Re: Custom Http Handler Factory and Possible Concurrency Issues on Application Start

      The factory, upon startup (it being instantiated) hits the database. That's
      a quick hit, but still it could be a full 1 second for the factory to fully
      initialize itself.
      It's reasonable to expect multiple requests to arrive within that one
      second. Will those requests queue up nicely and wait for the factory to
      initialize? Or would multiple instances of the factory be created?

      -Jordan


      "Juan T. Llibre" <nomailreplies@ nowhere.comwrot e in message
      news:e5riLcMxIH A.5520@TK2MSFTN GP06.phx.gbl...
      re:
      !what if 100 requests arrive all at once
      >
      You mean if 100 requests arrive within the same 10,000th of one second ?
      I'd find it very difficult to see that happening.
      >
      >
      >
      Juan T. Llibre, asp.net MVP
      asp.net faq : http://asp.net.do/faq/
      foros de asp.net, en español : http://asp.net.do/foros/
      =============== =============== ========
      "Jordan S." <A@B.comwrote in message
      news:etdJ7JMxIH A.3968@TK2MSFTN GP04.phx.gbl...
      >Using .NET 3.5...
      >>
      >1. Will ASP.NET guarantee that no more than ONE instance of a custom HTTP
      >handler factory (class implementing IHttpHandlerFac tory) is ever created
      >in an ASP.NET application?
      >>
      >2. Assuming the answer to #1 is "yes - never more than one instance" (I
      >hope that's true), then does ASP.NET automatically take care of
      >concurrency with respect to accessing that one instance?
      >>
      >My situation is that I have written a custom handler factory. In it's
      >constructor, I initialize a couple of class-scoped collections that are
      >subsequently used by logic called by the factory's GetHandler() method.
      >>
      >I am concerned that when the app is restarted (for whatever reason), and
      >if the site is really busy, multiple requests could arrive simultaneously
      >(or close enough to cause concurrency problems) while my custom factory
      >is initializing itself. Is there anything I can or should do to avoid
      >race conditions or other such concurrency problems - or will ASP.NET
      >queue the requests until the factory is ready to serve all of the queued
      >requests?
      >>
      >I have observed that my custom factory is not instantiated until the
      >first request arrives (after an IIS or application restart)... thus my
      >concern - what if 100 requests arrive all at once and the factory isn't
      >yet instantiated and initialized?
      >>
      >Thanks.
      >>
      >>
      >
      >
      >


      Comment

      • =?Utf-8?B?YnJ1Y2UgYmFya2Vy?=

        #4
        RE: Custom Http Handler Factory and Possible Concurrency Issues on App

        1. no. there is one instance per httpapplication instance. the actually
        loading of the code is serialized. httpapplication are keep in pool

        -- bruce (sqlwork.com)


        "Jordan S." wrote:
        Using .NET 3.5...
        >
        1. Will ASP.NET guarantee that no more than ONE instance of a custom HTTP
        handler factory (class implementing IHttpHandlerFac tory) is ever created in
        an ASP.NET application?
        >
        2. Assuming the answer to #1 is "yes - never more than one instance" (I hope
        that's true), then does ASP.NET automatically take care of concurrency with
        respect to accessing that one instance?
        >
        My situation is that I have written a custom handler factory. In it's
        constructor, I initialize a couple of class-scoped collections that are
        subsequently used by logic called by the factory's GetHandler() method.
        >
        I am concerned that when the app is restarted (for whatever reason), and if
        the site is really busy, multiple requests could arrive simultaneously (or
        close enough to cause concurrency problems) while my custom factory is
        initializing itself. Is there anything I can or should do to avoid race
        conditions or other such concurrency problems - or will ASP.NET queue the
        requests until the factory is ready to serve all of the queued requests?
        >
        I have observed that my custom factory is not instantiated until the first
        request arrives (after an IIS or application restart)... thus my concern -
        what if 100 requests arrive all at once and the factory isn't yet
        instantiated and initialized?
        >
        Thanks.
        >
        >
        >
        >

        Comment

        • Juan T. Llibre

          #5
          Re: Custom Http Handler Factory and Possible Concurrency Issues on Application Start

          re:
          !It's reasonable to expect multiple requests to arrive within that one second.

          Sure, but the requests for code-loading are serialized.



          Juan T. Llibre, asp.net MVP
          asp.net faq : http://asp.net.do/faq/
          foros de asp.net, en español : http://asp.net.do/foros/
          =============== =============== ========
          "Jordan S." <A@B.comwrote in message news:e5UrlgMxIH A.6096@TK2MSFTN GP06.phx.gbl...
          The factory, upon startup (it being instantiated) hits the database. That's a quick hit, but still it could be a full
          1 second for the factory to fully initialize itself.
          It's reasonable to expect multiple requests to arrive within that one second. Will those requests queue up nicely and
          wait for the factory to initialize? Or would multiple instances of the factory be created?
          >
          -Jordan
          >
          >
          "Juan T. Llibre" <nomailreplies@ nowhere.comwrot e in message news:e5riLcMxIH A.5520@TK2MSFTN GP06.phx.gbl...
          >re:
          >!what if 100 requests arrive all at once
          >>
          >You mean if 100 requests arrive within the same 10,000th of one second ?
          >I'd find it very difficult to see that happening.
          >>
          >>
          >>
          >Juan T. Llibre, asp.net MVP
          >asp.net faq : http://asp.net.do/faq/
          >foros de asp.net, en español : http://asp.net.do/foros/
          >============== =============== =========
          >"Jordan S." <A@B.comwrote in message news:etdJ7JMxIH A.3968@TK2MSFTN GP04.phx.gbl...
          >>Using .NET 3.5...
          >>>
          >>1. Will ASP.NET guarantee that no more than ONE instance of a custom HTTP handler factory (class implementing
          >>IHttpHandlerF actory) is ever created in an ASP.NET application?
          >>>
          >>2. Assuming the answer to #1 is "yes - never more than one instance" (I hope that's true), then does ASP.NET
          >>automatical ly take care of concurrency with respect to accessing that one instance?
          >>>
          >>My situation is that I have written a custom handler factory. In it's constructor, I initialize a couple of
          >>class-scoped collections that are subsequently used by logic called by the factory's GetHandler() method.
          >>>
          >>I am concerned that when the app is restarted (for whatever reason), and if the site is really busy, multiple
          >>requests could arrive simultaneously (or close enough to cause concurrency problems) while my custom factory is
          >>initializin g itself. Is there anything I can or should do to avoid race conditions or other such concurrency
          >>problems - or will ASP.NET queue the requests until the factory is ready to serve all of the queued requests?
          >>>
          >>I have observed that my custom factory is not instantiated until the first request arrives (after an IIS or
          >>application restart)... thus my concern - what if 100 requests arrive all at once and the factory isn't yet
          >>instantiate d and initialized?
          >>>
          >>Thanks.
          >>>
          >>>
          >>
          >>
          >>
          >
          >
          >

          Comment

          • Jordan S.

            #6
            Re: Custom Http Handler Factory and Possible Concurrency Issues on Application Start

            Thanks Juan.


            "Juan T. Llibre" <nomailreplies@ nowhere.comwrot e in message
            news:eXcST9MxIH A.5288@TK2MSFTN GP06.phx.gbl...
            re:
            !It's reasonable to expect multiple requests to arrive within that one
            second.
            >
            Sure, but the requests for code-loading are serialized.
            >
            >
            >
            Juan T. Llibre, asp.net MVP
            asp.net faq : http://asp.net.do/faq/
            foros de asp.net, en español : http://asp.net.do/foros/
            =============== =============== ========
            "Jordan S." <A@B.comwrote in message
            news:e5UrlgMxIH A.6096@TK2MSFTN GP06.phx.gbl...
            >The factory, upon startup (it being instantiated) hits the database.
            >That's a quick hit, but still it could be a full 1 second for the factory
            >to fully initialize itself.
            >It's reasonable to expect multiple requests to arrive within that one
            >second. Will those requests queue up nicely and wait for the factory to
            >initialize? Or would multiple instances of the factory be created?
            >>
            >-Jordan
            >>
            >>
            >"Juan T. Llibre" <nomailreplies@ nowhere.comwrot e in message
            >news:e5riLcMxI HA.5520@TK2MSFT NGP06.phx.gbl.. .
            >>re:
            >>!what if 100 requests arrive all at once
            >>>
            >>You mean if 100 requests arrive within the same 10,000th of one second ?
            >>I'd find it very difficult to see that happening.
            >>>
            >>>
            >>>
            >>Juan T. Llibre, asp.net MVP
            >>asp.net faq : http://asp.net.do/faq/
            >>foros de asp.net, en español : http://asp.net.do/foros/
            >>============= =============== ==========
            >>"Jordan S." <A@B.comwrote in message
            >>news:etdJ7JMx IHA.3968@TK2MSF TNGP04.phx.gbl. ..
            >>>Using .NET 3.5...
            >>>>
            >>>1. Will ASP.NET guarantee that no more than ONE instance of a custom
            >>>HTTP handler factory (class implementing IHttpHandlerFac tory) is ever
            >>>created in an ASP.NET application?
            >>>>
            >>>2. Assuming the answer to #1 is "yes - never more than one instance" (I
            >>>hope that's true), then does ASP.NET automatically take care of
            >>>concurrenc y with respect to accessing that one instance?
            >>>>
            >>>My situation is that I have written a custom handler factory. In it's
            >>>constructo r, I initialize a couple of class-scoped collections that are
            >>>subsequent ly used by logic called by the factory's GetHandler() method.
            >>>>
            >>>I am concerned that when the app is restarted (for whatever reason),
            >>>and if the site is really busy, multiple requests could arrive
            >>>simultaneous ly (or close enough to cause concurrency problems) while my
            >>>custom factory is initializing itself. Is there anything I can or
            >>>should do to avoid race conditions or other such concurrency problems -
            >>>or will ASP.NET queue the requests until the factory is ready to serve
            >>>all of the queued requests?
            >>>>
            >>>I have observed that my custom factory is not instantiated until the
            >>>first request arrives (after an IIS or application restart)... thus my
            >>>concern - what if 100 requests arrive all at once and the factory isn't
            >>>yet instantiated and initialized?
            >>>>
            >>>Thanks.
            >>>>
            >>>>
            >>>
            >>>
            >>>
            >>
            >>
            >>
            >
            >
            >


            Comment

            • Jordan S.

              #7
              Re: Custom Http Handler Factory and Possible Concurrency Issues on App

              Thanks Bruce.


              "bruce barker" <brucebarker@di scussions.micro soft.comwrote in message
              news:2E899BBE-4751-4BD3-B8A8-ED86BDA8C240@mi crosoft.com...
              1. no. there is one instance per httpapplication instance. the actually
              loading of the code is serialized. httpapplication are keep in pool
              >
              -- bruce (sqlwork.com)
              >
              >
              "Jordan S." wrote:
              >
              >Using .NET 3.5...
              >>
              >1. Will ASP.NET guarantee that no more than ONE instance of a custom HTTP
              >handler factory (class implementing IHttpHandlerFac tory) is ever created
              >in
              >an ASP.NET application?
              >>
              >2. Assuming the answer to #1 is "yes - never more than one instance" (I
              >hope
              >that's true), then does ASP.NET automatically take care of concurrency
              >with
              >respect to accessing that one instance?
              >>
              >My situation is that I have written a custom handler factory. In it's
              >constructor, I initialize a couple of class-scoped collections that are
              >subsequently used by logic called by the factory's GetHandler() method.
              >>
              >I am concerned that when the app is restarted (for whatever reason), and
              >if
              >the site is really busy, multiple requests could arrive simultaneously
              >(or
              >close enough to cause concurrency problems) while my custom factory is
              >initializing itself. Is there anything I can or should do to avoid race
              >conditions or other such concurrency problems - or will ASP.NET queue the
              >requests until the factory is ready to serve all of the queued requests?
              >>
              >I have observed that my custom factory is not instantiated until the
              >first
              >request arrives (after an IIS or application restart)... thus my
              >concern -
              >what if 100 requests arrive all at once and the factory isn't yet
              >instantiated and initialized?
              >>
              >Thanks.
              >>
              >>
              >>
              >>
              >


              Comment

              Working...