[pal-cvs 3886] [1621] fixed deadlock problem.

Back to archive index

svnno****@sourc***** svnno****@sourc*****
2008年 12月 27日 (土) 07:10:41 JST


Revision: 1621
          http://svn.sourceforge.jp/view?root=pal&view=rev&rev=1621
Author:   shinsuke
Date:     2008-12-27 07:10:40 +0900 (Sat, 27 Dec 2008)

Log Message:
-----------
fixed deadlock problem.

Modified Paths:
--------------
    pal-portal/branches/pal-portal-1.x/portal/jetspeed-2/components/page-manager/src/java/org/apache/jetspeed/om/page/ContentFragmentImpl.java
    pal-portal/branches/pal-portal-1.x/portal/jetspeed-2/components/page-manager/src/java/org/apache/jetspeed/om/page/resources/ContentFragmentResources.properties
    pal-portal/branches/pal-portal-1.x/portal/jetspeed-2/components/page-manager/src/java/org/apache/jetspeed/om/page/resources/ContentFragmentResources_en.properties
    pal-portal/branches/pal-portal-1.x/portal/jetspeed-2/components/page-manager/src/java/org/apache/jetspeed/om/page/resources/ContentFragmentResources_ja.properties
    pal-portal/branches/pal-portal-1.x/portal/jetspeed-2/components/portal/src/java/org/apache/jetspeed/aggregator/impl/WorkerMonitorImpl.java
    pal-portal/branches/pal-portal-1.x/portal/jetspeed-2/src/webapp/WEB-INF/assembly/aggregation.xml


-------------- next part --------------
Modified: pal-portal/branches/pal-portal-1.x/portal/jetspeed-2/components/page-manager/src/java/org/apache/jetspeed/om/page/ContentFragmentImpl.java
===================================================================
--- pal-portal/branches/pal-portal-1.x/portal/jetspeed-2/components/page-manager/src/java/org/apache/jetspeed/om/page/ContentFragmentImpl.java	2008-12-23 02:59:52 UTC (rev 1620)
+++ pal-portal/branches/pal-portal-1.x/portal/jetspeed-2/components/page-manager/src/java/org/apache/jetspeed/om/page/ContentFragmentImpl.java	2008-12-26 22:10:40 UTC (rev 1621)
@@ -159,7 +159,11 @@
                             {getId()};
                             log.log("1100004", args); // REPLACED
                         }
-                        portletContent.wait();
+                        while (overridenContent != null
+                                && !portletContent.isComplete())
+                        {
+                            portletContent.wait(1000);
+                        }
                         return portletContent.getContent();
                     }
                     catch (InterruptedException e)

Modified: pal-portal/branches/pal-portal-1.x/portal/jetspeed-2/components/page-manager/src/java/org/apache/jetspeed/om/page/resources/ContentFragmentResources.properties
===================================================================
--- pal-portal/branches/pal-portal-1.x/portal/jetspeed-2/components/page-manager/src/java/org/apache/jetspeed/om/page/resources/ContentFragmentResources.properties	2008-12-23 02:59:52 UTC (rev 1620)
+++ pal-portal/branches/pal-portal-1.x/portal/jetspeed-2/components/page-manager/src/java/org/apache/jetspeed/om/page/resources/ContentFragmentResources.properties	2008-12-26 22:10:40 UTC (rev 1621)
@@ -2,3 +2,4 @@
 could.not.access.portlet=Sorry, but we were unable access the requested content. Please contact to a site administrator.
 out.of.service=The content is not responding and has been taken out of service.
 access.denied=Access denied.
+could.not.access.content.because.of.timeout=Coult not access this content because of a timeout. Please try again later.

Modified: pal-portal/branches/pal-portal-1.x/portal/jetspeed-2/components/page-manager/src/java/org/apache/jetspeed/om/page/resources/ContentFragmentResources_en.properties
===================================================================
--- pal-portal/branches/pal-portal-1.x/portal/jetspeed-2/components/page-manager/src/java/org/apache/jetspeed/om/page/resources/ContentFragmentResources_en.properties	2008-12-23 02:59:52 UTC (rev 1620)
+++ pal-portal/branches/pal-portal-1.x/portal/jetspeed-2/components/page-manager/src/java/org/apache/jetspeed/om/page/resources/ContentFragmentResources_en.properties	2008-12-26 22:10:40 UTC (rev 1621)
@@ -2,3 +2,4 @@
 could.not.access.portlet=Sorry, but we were unable access the requested content. Please contact to a site administrator.
 out.of.service=The content is not responding and has been taken out of service.
 access.denied=Access denied.
+could.not.access.content.because.of.timeout=Coult not access this content because of a timeout. Please try again later.

Modified: pal-portal/branches/pal-portal-1.x/portal/jetspeed-2/components/page-manager/src/java/org/apache/jetspeed/om/page/resources/ContentFragmentResources_ja.properties
===================================================================
--- pal-portal/branches/pal-portal-1.x/portal/jetspeed-2/components/page-manager/src/java/org/apache/jetspeed/om/page/resources/ContentFragmentResources_ja.properties	2008-12-23 02:59:52 UTC (rev 1620)
+++ pal-portal/branches/pal-portal-1.x/portal/jetspeed-2/components/page-manager/src/java/org/apache/jetspeed/om/page/resources/ContentFragmentResources_ja.properties	2008-12-26 22:10:40 UTC (rev 1621)
@@ -2,3 +2,4 @@
 could.not.access.portlet=\u3053\u306e\u30b3\u30f3\u30c6\u30f3\u30c4\u306b\u30a2\u30af\u30bb\u30b9\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002\u30b5\u30a4\u30c8\u7ba1\u7406\u8005\u306b\u304a\u554f\u3044\u5408\u308f\u305b\u304f\u3060\u3055\u3044\u3002
 out.of.service=\u3053\u306e\u30b3\u30f3\u30c6\u30f3\u30c4\u306f\u30b5\u30fc\u30d3\u30b9\u505c\u6b62\u4e2d\u3067\u3059\u3002
 access.denied=\u3053\u306e\u30b3\u30f3\u30c6\u30f3\u30c4\u306b\u30a2\u30af\u30bb\u30b9\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002
+could.not.access.content.because.of.timeout=\u30bf\u30a4\u30e0\u30a2\u30a6\u30c8\u306b\u3088\u308a\u3001\u3053\u306e\u30b3\u30f3\u30c6\u30f3\u30c4\u3078\u30a2\u30af\u30bb\u30b9\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002\u5f8c\u3067\u518d\u5ea6\u304a\u8a66\u3057\u304f\u3060\u3055\u3044\u3002

Modified: pal-portal/branches/pal-portal-1.x/portal/jetspeed-2/components/portal/src/java/org/apache/jetspeed/aggregator/impl/WorkerMonitorImpl.java
===================================================================
--- pal-portal/branches/pal-portal-1.x/portal/jetspeed-2/components/portal/src/java/org/apache/jetspeed/aggregator/impl/WorkerMonitorImpl.java	2008-12-23 02:59:52 UTC (rev 1620)
+++ pal-portal/branches/pal-portal-1.x/portal/jetspeed-2/components/portal/src/java/org/apache/jetspeed/aggregator/impl/WorkerMonitorImpl.java	2008-12-26 22:10:40 UTC (rev 1621)
@@ -229,6 +229,7 @@
     {
         try
         {
+            long now = System.currentTimeMillis();
             for (Iterator iter = renderingJobs.iterator(); iter.hasNext();)
             {
                 RenderingJob job = (RenderingJob) iter.next();
@@ -238,7 +239,28 @@
                 {
                     if (!portletContent.isComplete())
                     {
-                        portletContent.wait();
+                        if (job.getTimeout() == 0)
+                        {
+                            portletContent.wait();
+                        }
+                        else
+                        {
+                            long remainingTime = job.getTimeout()
+                                    - (System.currentTimeMillis() - now);
+                            if (remainingTime <= 0)
+                            {
+                                remainingTime = 1L;
+                            }
+                            portletContent.wait(remainingTime);
+                            if (!portletContent.isComplete())
+                            {
+                                // Timeout
+                                job
+                                        .getFragment()
+                                        .overrideRenderedContent(
+                                                "could.not.access.content.because.of.timeout");
+                            }
+                        }
                     }
                 }
             }
@@ -423,27 +445,28 @@
         {
             try
             {
-                //if (log.isWarnEnabled())
-                //{
-                PortletWindow window = job.getWindow();
-                ObjectID windowId = (null != window ? window.getId() : null);
-                //log
-                //        .warn("Portlet Rendering job to be interrupted by timeout ("
-                //                + job.getTimeout() + "ms): " + windowId);
-                Object[] args = new Object[]
-                {job.getTimeout(), windowId};
-                log.log("1200028", args); // REPLACED
-                //}
-
                 PortletContent content = job.getPortletContent();
 
                 synchronized (content)
                 {
                     if (!content.isComplete())
                     {
+                        //if (log.isWarnEnabled())
+                        //{
+                        PortletWindow window = job.getWindow();
+                        ObjectID windowId = (null != window ? window.getId()
+                                : null);
+                        //log
+                        //        .warn("Portlet Rendering job to be interrupted by timeout ("
+                        //                + job.getTimeout() + "ms): " + windowId);
+                        Object[] args = new Object[]
+                        {job.getTimeout(), windowId};
+                        log.log("1200028", args); // REPLACED
+                        //}
+
                         worker.interrupt();
                         // TODO Findbugs
-                        content.wait();
+                        content.wait(job.getTimeout());
                     }
                 }
 

Modified: pal-portal/branches/pal-portal-1.x/portal/jetspeed-2/src/webapp/WEB-INF/assembly/aggregation.xml
===================================================================
--- pal-portal/branches/pal-portal-1.x/portal/jetspeed-2/src/webapp/WEB-INF/assembly/aggregation.xml	2008-12-23 02:59:52 UTC (rev 1620)
+++ pal-portal/branches/pal-portal-1.x/portal/jetspeed-2/src/webapp/WEB-INF/assembly/aggregation.xml	2008-12-26 22:10:40 UTC (rev 1621)
@@ -26,7 +26,7 @@
         Zero means no portlet timeout option by default.
         -->        
         <constructor-arg index='1'>
-            <value>5000</value>
+            <value>30000</value>
         </constructor-arg>        
         <!--  Out of service limit, if a portlet entity times out past its limit (or default limit) n consecutive times, it is taken out of service -->
        <constructor-arg index="2">


pal-cvs メーリングリストの案内
Back to archive index