-->
These old forums are deprecated now and set to read-only. We are waiting for you on our new forums!
More modern, Discourse-based and with GitHub/Google/Twitter authentication built-in.

All times are UTC - 5 hours [ DST ]



Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 7 posts ] 
Author Message
 Post subject: Strange lazy initialization exception.
PostPosted: Sat Mar 06, 2004 1:39 am 
Newbie

Joined: Sat Mar 06, 2004 1:32 am
Posts: 3
Experts,

after spending long hours resolving my problem and seraching in the forum I decided to post my problem.

I am using struts and hibernate in my web app with 'Open view with session pattern'. I have filter that closes the session when response is rendered.

I am trying to iterate over my lazy collection, but whenever I do that it throws an 'Failed to lazily initialize a collection - no Session'. The strange thing is that there is a session and I am printing the session object before I access the lazy collection.

Any help in this matter would be greatly appreciated. It pass midnight and I kinda gave for tomight.

Thanks

Vish


Top
 Profile  
 
 Post subject:
PostPosted: Sat Mar 06, 2004 4:35 am 
Hibernate Team
Hibernate Team

Joined: Thu Dec 18, 2003 9:55 am
Posts: 1977
Location: France
When asking questions, give at least:
the Hibernate version
your mapping documents
the Java code between sessionFactory.openSession() and session.close()
the full stack trace of any exception that occurs
the name and version of the database you are using
a debug level Hibernate log excerpt is also appreciated


Top
 Profile  
 
 Post subject:
PostPosted: Sat Mar 06, 2004 11:27 am 
Newbie

Joined: Sat Mar 06, 2004 1:32 am
Posts: 3
I apologize for not giving all the details

Hibernate version 2.1 using MS SQL Server 2000

Code for closiong and opening session.

public static Session currentSession() throws DAOException {

Session s = (Session) session.get();
try {
if (s == null) {
s = getSessionFactory().openSession();
session.set(s);
System.out.println("Creating session");
}
} catch (HibernateException he) {
he.printStackTrace();
throw new DAOException(he);
} finally {

}
return s;
}


public static void closeSession() throws DAOException {
Session s = (Session) session.get();
session.set(null);
System.out.println("------");
if (s != null) {
try {
s.close();
System.out.println("Closing session");
} catch (HibernateException he) {
throw new DAOException(he);
}
}
}


This mapping works in at other places and I don;t any problem with this mapping. This is for your reference

<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 2.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">

<hibernate-mapping package="com.mma.savesimply">
<class name="AllocationSet" table="AllocationSets" optimistic-lock="version">
<id name="id" type="int">
<generator class="identity"/>
</id>
<discriminator column="classid" not-null="true" length="50"/>
<version name="version" type="int"/>

<property name="name" unique="true" length="50" not-null="true"/>
<property name="description"/>
<property name="rebalanceOnPurchase" not-null="true"/>
<property name="rebalanceOnRedemption" not-null="true"/>
<many-to-one name="automationMode" class="AllocationSetAutomationMode" column="automationMode_id" not-null="true"/>
<property name="rebalancePeriod" not-null="true"/>
<property name="eventNotificationPeriod" not-null="true"/>
<property name="tolerance" not-null="true"/>
<many-to-one name="status" class="AllocationSetStatus" column="status_id" not-null="true"/>
<many-to-one name="type" class="AllocationSetType" column="type_id" not-null="true"/>

<bag name="models" inverse="true" lazy="true" cascade="all" order-by="yearsToGoal DESC">
<key column="set_id"/>
<one-to-many class="AllocationModel"/>
</bag>
</class>
</hibernate-mapping>


this is the stack trace

Session:net.sf.hibernate.impl.SessionImpl@d66725 <---- notice I am prinitng the session object before i iterate thru the lazy collection.
ServletException in:/WEB-INF/jsp/consumer/testdrive/modelPortfolioContent.jsp] Failed to lazily initialize a collection - no Session' net.sf.hibernate.LazyInitializationException: Failed to lazily initialize a collection - no Session at net.sf.hibernate.collection.PersistentCollection.initialize(PersistentCollection.java:213) at net.sf.hibernate.collection.PersistentCollection.read(PersistentCollection.java:69) at net.sf.hibernate.collection.Bag.size(Bag.java:231) at org.apache.jsp.WEB_002dINF.jsp.consumer.testdrive.modelPortfolioInclude_jsp._jspService(modelPortfolioInclude_jsp.java:66) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:133) at javax.servlet.http.HttpServlet.service(HttpServlet.java:856) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:311) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:301) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:248) at javax.servlet.http.HttpServlet.service(HttpServlet.java:856) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:284) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:204) at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:742) at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:630) at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:542) at org.apache.jasper.runtime.JspRuntimeLibrary.include(JspRuntimeLibrary.java:1002) at org.apache.jsp.WEB_002dINF.jsp.consumer.testdrive.modelPortfolioContent_jsp._jspService(modelPortfolioContent_jsp.java:193) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:133) at javax.servlet.http.HttpServlet.service(HttpServlet.java:856) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:311) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:301) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:248) at javax.servlet.http.HttpServlet.service(HttpServlet.java:856) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:284) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:204) at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:742) at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:630) at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:542) at org.apache.jasper.runtime.JspRuntimeLibrary.include(JspRuntimeLibrary.java:1002) at org.apache.jasper.runtime.PageContextImpl.include(PageContextImpl.java:626) at org.apache.struts.tiles.TilesUtilImpl.doInclude(TilesUtilImpl.java:137) at org.apache.struts.tiles.TilesUtil.doInclude(TilesUtil.java:177) at org.apache.struts.taglib.tiles.InsertTag.doInclude(InsertTag.java:756) at org.apache.struts.taglib.tiles.InsertTag$InsertHandler.doEndTag(InsertTag.java:881) at org.apache.struts.taglib.tiles.InsertTag.doEndTag(InsertTag.java:473) at org.apache.jsp.WEB_002dINF.jsp.basicLayout_jsp._jspx_meth_tiles_insert_1(basicLayout_jsp.java:122) at org.apache.jsp.WEB_002dINF.jsp.basicLayout_jsp._jspService(basicLayout_jsp.java:65) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:133) at javax.servlet.http.HttpServlet.service(HttpServlet.java:856) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:311) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:301) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:248) at javax.servlet.http.HttpServlet.service(HttpServlet.java:856) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:284) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:204) at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:742) at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:630) at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:542) at org.apache.jasper.runtime.JspRuntimeLibrary.include(JspRuntimeLibrary.java:1002) at org.apache.jasper.runtime.PageContextImpl.include(PageContextImpl.java:626) at org.apache.struts.tiles.TilesUtilImpl.doInclude(TilesUtilImpl.java:137) at org.apache.struts.tiles.TilesUtil.doInclude(TilesUtil.java:177) at org.apache.struts.taglib.tiles.InsertTag.doInclude(InsertTag.java:756) at org.apache.struts.taglib.tiles.InsertTag$InsertHandler.doEndTag(InsertTag.java:881) at org.apache.struts.taglib.tiles.InsertTag.doEndTag(InsertTag.java:473) at org.apache.jsp.WEB_002dINF.jsp.consumer.testdrive.modelPortfolio_jsp._jspx_meth_tiles_insert_0(modelPortfolio_jsp.java:125) at org.apache.jsp.WEB_002dINF.jsp.consumer.testdrive.modelPortfolio_jsp._jspService(modelPortfolio_jsp.java:75) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:133) at javax.servlet.http.HttpServlet.service(HttpServlet.java:856) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:311) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:301) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:248) at javax.servlet.http.HttpServlet.service(HttpServlet.java:856) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:284) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:204) at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:742) at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:506) at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:443) at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:359) at org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1069) at org.apache.struts.tiles.TilesRequestProcessor.doForward(TilesRequestProcessor.java:274) at org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:455) at org.apache.struts.tiles.TilesRequestProcessor.processForwardConfig(TilesRequestProcessor.java:320) at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:279) at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482) at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:525) at javax.servlet.http.HttpServlet.service(HttpServlet.java:763) at javax.servlet.http.HttpServlet.service(HttpServlet.java:856) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:284) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:204) at com.mma.savesimply.filters.SessionFilter.doFilter(SessionFilter.java:37) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:233) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:204) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:256) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:151) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:564) at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:245) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:199) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:151) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:564) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:195) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:151) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:164) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:149) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:564) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:156) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:151) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:564) at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:972) at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:211) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:805) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:696) at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:605) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:677) at java.lang.Thread.run(Thread.java:534)


any help apprecitated


Top
 Profile  
 
 Post subject:
PostPosted: Sat Mar 06, 2004 12:15 pm 
Hibernate Team
Hibernate Team

Joined: Sun Sep 14, 2003 3:54 am
Posts: 7256
Location: Paris, France
Do you get that collection from a previous request ?
You have to reattach it.

_________________
Emmanuel


Top
 Profile  
 
 Post subject:
PostPosted: Sat Mar 06, 2004 12:31 pm 
Newbie

Joined: Sat Mar 06, 2004 1:32 am
Posts: 3
The logic is the user selects a radio button and when they select an "allocationset
(myobject), I get the object based on the id selected and load the object in Httpsession and redirects user to different page. At this time lazy collection is not initialized because it was redirected to different JSP page.

But when user comes to that page to see what they have selected, I get this expection. And I also checked whether session is connected and open and they both returns true.


Is it a problem, when you retrieve an object from database thru one hibernate session and close that session upon request existing. And comeback with different hibernate session to view the that object ( the object is stored in HttpSession).

What i am doing wrong.



This is latest stack trace with DEBUG on

Session:true true (session.isConnected() and session.isOpen())
Include:(2:0)
10:53:33,756 ERROR LazyInitializationException:25 - Failed to lazily initialize a collection - no Session
net.sf.hibernate.LazyInitializationException: Failed to lazily initialize a collection - no Session
at net.sf.hibernate.collection.PersistentCollection.initialize(PersistentCollection.java:213)
at net.sf.hibernate.collection.PersistentCollection.read(PersistentCollection.java:69)
at net.sf.hibernate.collection.Bag.size(Bag.java:231)
at org.apache.jsp.WEB_002dINF.jsp.consumer.testdrive.modelPortfolioInclude_jsp._jspService(modelPortfolioInclude_jsp.java:67)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:133)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:311)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:301)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:248)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:284)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:204)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:742)
at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:630)
at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:542)
at org.apache.jasper.runtime.JspRuntimeLibrary.include(JspRuntimeLibrary.java:1002)
at org.apache.jsp.WEB_002dINF.jsp.consumer.testdrive.modelPortfolioContent_jsp._jspService(modelPortfolioContent_jsp.java:193)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:133)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:311)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:301)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:248)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:284)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:204)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:742)
at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:630)
at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:542)
at org.apache.jasper.runtime.JspRuntimeLibrary.include(JspRuntimeLibrary.java:1002)
at org.apache.jasper.runtime.PageContextImpl.include(PageContextImpl.java:626)
at org.apache.struts.tiles.TilesUtilImpl.doInclude(TilesUtilImpl.java:137)
at org.apache.struts.tiles.TilesUtil.doInclude(TilesUtil.java:177)
at org.apache.struts.taglib.tiles.InsertTag.doInclude(InsertTag.java:756)
at org.apache.struts.taglib.tiles.InsertTag$InsertHandler.doEndTag(InsertTag.java:881)
at org.apache.struts.taglib.tiles.InsertTag.doEndTag(InsertTag.java:473)
at org.apache.jsp.WEB_002dINF.jsp.basicLayout_jsp._jspx_meth_tiles_insert_1(basicLayout_jsp.java:122)
at org.apache.jsp.WEB_002dINF.jsp.basicLayout_jsp._jspService(basicLayout_jsp.java:65)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:133)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:311)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:301)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:248)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:284)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:204)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:742)
at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:630)
at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:542)
at org.apache.jasper.runtime.JspRuntimeLibrary.include(JspRuntimeLibrary.java:1002)
at org.apache.jasper.runtime.PageContextImpl.include(PageContextImpl.java:626)
at org.apache.struts.tiles.TilesUtilImpl.doInclude(TilesUtilImpl.java:137)
at org.apache.struts.tiles.TilesUtil.doInclude(TilesUtil.java:177)
at org.apache.struts.taglib.tiles.InsertTag.doInclude(InsertTag.java:756)
at org.apache.struts.taglib.tiles.InsertTag$InsertHandler.doEndTag(InsertTag.java:881)
at org.apache.struts.taglib.tiles.InsertTag.doEndTag(InsertTag.java:473)
at org.apache.jsp.WEB_002dINF.jsp.consumer.testdrive.modelPortfolio_jsp._jspx_meth_tiles_insert_0(modelPortfolio_jsp.java:125)
at org.apache.jsp.WEB_002dINF.jsp.consumer.testdrive.modelPortfolio_jsp._jspService(modelPortfolio_jsp.java:75)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:133)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:311)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:301)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:248)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:284)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:204)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:742)
at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:506)
at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:443)
at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:359)
at org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1069)
at org.apache.struts.tiles.TilesRequestProcessor.doForward(TilesRequestProcessor.java:274)
at org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:455)
at org.apache.struts.tiles.TilesRequestProcessor.processForwardConfig(TilesRequestProcessor.java:320)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:279)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:525)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:763)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChai


Top
 Profile  
 
 Post subject:
PostPosted: Sat Mar 06, 2004 12:46 pm 
Hibernate Team
Hibernate Team

Joined: Thu Dec 18, 2003 9:55 am
Posts: 1977
Location: France
i think it's not a good idea to put persistent object on httpSession and retrieve them on jsp, you should use temporary tranfer object (DTO for example).
It's better if the loading is done on the server side, not on the jsp.


Top
 Profile  
 
 Post subject:
PostPosted: Sat Mar 06, 2004 12:55 pm 
Hibernate Team
Hibernate Team

Joined: Thu Dec 18, 2003 9:55 am
Posts: 1977
Location: France
Maybe i misunderstood...
try session.lock(obj), or session.update(obj) or session.refresh(obj)....

but it could better if you only store the id of the object on the httpSession and then call session.load(obj) again with the new hibernate session.


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 7 posts ] 

All times are UTC - 5 hours [ DST ]


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
© Copyright 2014, Red Hat Inc. All rights reserved. JBoss and Hibernate are registered trademarks and servicemarks of Red Hat, Inc.