Though I agree we can put it in initialization code of AgentManagerImpl, we have to guarantee AgentManagerImpl is loaded before ConfigDao. Technically I think it's ok to the Dao is guaranteed before this static block of DirectoAgentAttache.
A static block is invoked when a class type initialized, and from Java spec, a class type is initialized when >12.4.1. When Initialization Occurs >A class or interface type T will be initialized immediately before the first >occurrence of any one of the following: >T is a class and an instance of T is created. >T is a class and a static method declared by T is invoked. >A static field declared by T is assigned. >A static field declared by T is used and the field is not a constant variable >(§4.12.4). >T is a top level class (§7.6), and an assert statement (§14.10) lexically >nested within T (§8.1.3) is executed. >A reference to a static field (§8.3.1.1) causes initialization of only the >class or interface that actually declares it, even though it might be referred >to through the name of a subclass, a subinterface, or a class that implements >an interface. >Invocation of certain reflective methods in class Class and in package >java.lang.reflect also causes class or interface initialization. For Dao is loaded when componentloader initialized, at that time being we don't have code path pertaining to DirectAgentAttach class. > -----Original Message----- > From: Chiradeep Vittal [mailto:nore...@reviews.apache.org] On Behalf Of > Chiradeep Vittal > Sent: Wednesday, January 09, 2013 4:39 PM > To: Abhinandan Prateek; Alex Huang > Cc: cloudstack; Koushik Das; Chiradeep Vittal > Subject: Re: Review Request: CLOUDSTACK-810: Make DirectAgent thread > pool size configurable > > > ----------------------------------------------------------- > This is an automatically generated e-mail. To reply, visit: > https://reviews.apache.org/r/8855/#review15219 > ----------------------------------------------------------- > > > > server/src/com/cloud/agent/manager/DirectAgentAttache.java > <https://reviews.apache.org/r/8855/#comment32827> > > We cannot assume that the Daos will be loaded before this static > initializer > is called. The order of calling static initializers is not defined. It is > better to > initialize it via the AgentManagerImpl > > > - Chiradeep Vittal > > > On Jan. 8, 2013, 8:06 a.m., Koushik Das wrote: > > > > ----------------------------------------------------------- > > This is an automatically generated e-mail. To reply, visit: > > https://reviews.apache.org/r/8855/ > > ----------------------------------------------------------- > > > > (Updated Jan. 8, 2013, 8:06 a.m.) > > > > > > Review request for cloudstack, Abhinandan Prateek and Alex Huang. > > > > > > Description > > ------- > > > > Currently the DirectAgent pool size is hard-coded to 500. One of the factors > that can affect this is the number of hosts in a deployment. If there are more > than 500 hosts (say around 1K) then this pool can easily get exhausted > resulting in delays and undesired behavior. > > > > Removed hard-coding of directagent thread pool size and now reading it > from configuration. > > > > > > This addresses bug CLOUDSTACK-810. > > > > > > Diffs > > ----- > > > > server/src/com/cloud/agent/manager/DirectAgentAttache.java 848c7e6 > > server/src/com/cloud/configuration/Config.java 92313ea > > setup/db/db/schema-40to410.sql 4455956 > > > > Diff: https://reviews.apache.org/r/8855/diff/ > > > > > > Testing > > ------- > > > > Verified that configuration entry is present in the 'configuration' table. > > Also verified in a debugger that it is read correctly while creating the > directagent thread pool. > > > > > > Thanks, > > > > Koushik Das > > > >