core
core copied to clipboard
[Site Copy] : Re-creating a deleted Site is throwing an error
Parent Issue
No response
Problem Statement
For Content Authors, or even for development/testing purposes, re-creating a Site that you have previously deleted is a fairly common task. However, when you do that, dotCMS is displaying an error message indicating that the hostName
field -- i.e.; the Site Key
field -- could not be validated. This keeps you from using the same Site Key
you used before.
Steps to Reproduce
- Star up dotCMS with an Enterprise License. To test this quickly, use the Empty Starter.
- Go to the System > Sites portlet, and click the
Add Site
button to copy an existing Site. - Select the
default
Site, and clickNext
to copy it. For instance, name your Site:one.com
- Make sure you don't get any errors in the log, or get the expected
The copy of Site 'one.com' has finished correctly.
notification. - Now, (1) un-publish, (2) archive, and (3) delete the
one.com
Site. - Again, click the
Add Site
button to create a copy of thedefault
Site, and name the copyone.com
once more. - You'll get the following error message on the portlet:
And this is what you get in the dotcms.log
file:
14:31:27.140 WARN web.ContentletWebAPIImpl - Calling Save Web Asset: , without an action.
14:31:27.140 INFO web.ContentletWebAPIImpl - Saving the Host
14:31:27.140 INFO util.ActivityLogger - class com.dotcms.content.elasticsearch.business.ESContentletAPIImpl: system : Contentlet to be saved: , StartDate: N/D; EndDate: N/D; User:dotcms.org.1; ContentIdentifier:
14:31:27.155 WARN business.ESContentletAPIImpl - Unique field [hostName] could not be validated, as unique content Inode 'f26c7149-c0f3-471a-83f2-57caee665ae2' was not found. ES Index might need to be reindexed.
14:31:27.155 WARN business.ESContentletAPIImpl - Unique field [hostName] could not be validated, as unique content Inode 'f26c7149-c0f3-471a-83f2-57caee665ae2' was not found. ES Index might need to be reindexed.
14:31:27.155 WARN business.ESContentletAPIImpl - Unique field [hostName] could not be validated, as unique content Inode 'f26c7149-c0f3-471a-83f2-57caee665ae2' was not found. ES Index might need to be reindexed.
14:31:27.156 WARN business.ESContentletAPIImpl - com.dotcms.content.elasticsearch.business.ESContentletAPIImpl.validateContentlet(ESContentletAPIImpl.java:7682)
14:31:27.156 WARN business.ESContentletAPIImpl - Unique field [hostName] could not be validated, as unique content Inode 'f26c7149-c0f3-471a-83f2-57caee665ae2' was not found. ES Index might need to be reindexed.
com.dotmarketing.portlets.contentlet.business.DotContentletValidationException: Unique field [hostName] could not be validated, as unique content Inode 'f26c7149-c0f3-471a-83f2-57caee665ae2' was not found. ES Index might need to be reindexed.
at com.dotcms.content.elasticsearch.business.ESContentletAPIImpl.validateContentlet(ESContentletAPIImpl.java:7682) ~[?:?]
at com.dotcms.content.elasticsearch.business.ESContentletAPIImpl.validateContentlet(ESContentletAPIImpl.java:8115) ~[?:?]
at com.dotmarketing.portlets.contentlet.business.ContentletAPIInterceptor.validateContentlet(ContentletAPIInterceptor.java:2271) ~[?:?]
at com.dotcms.content.elasticsearch.business.ESContentletAPIImpl.internalCheckin(ESContentletAPIImpl.java:5382) ~[?:?]
at com.dotcms.content.elasticsearch.business.ESContentletAPIImpl.lambda$checkin$59(ESContentletAPIImpl.java:5001) ~[?:?]
at com.dotcms.concurrent.lock.StripedLockImpl.tryLock(StripedLockImpl.java:100) ~[?:?]
at com.dotcms.concurrent.lock.StripedLockImpl.tryLock(StripedLockImpl.java:55) ~[?:?]
at com.dotcms.concurrent.lock.IdentifierStripedLock.tryLock(IdentifierStripedLock.java:16) ~[?:?]
at com.dotcms.content.elasticsearch.business.ESContentletAPIImpl.checkin(ESContentletAPIImpl.java:5000) ~[?:?]
at com.dotcms.content.elasticsearch.business.ESContentletAPIImpl.checkin(ESContentletAPIImpl.java:9908) ~[?:?]
at com.dotmarketing.portlets.contentlet.business.ContentletAPIInterceptor.checkin(ContentletAPIInterceptor.java:175) ~[?:?]
at com.dotmarketing.portlets.contentlet.business.web.ContentletWebAPIImpl.saveWebAsset(ContentletWebAPIImpl.java:555) ~[?:?]
at com.dotmarketing.portlets.contentlet.business.web.ContentletWebAPIImpl.saveContent(ContentletWebAPIImpl.java:161) ~[?:?]
at com.dotmarketing.portlets.contentlet.ajax.ContentletAjax.saveContent(ContentletAjax.java:1987) ~[?:?]
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:?]
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
at java.base/java.lang.reflect.Method.invoke(Method.java:566) ~[?:?]
at com.dotcms.repackage.org.directwebremoting.impl.CreatorModule$1.doFilter(CreatorModule.java:229) ~[?:?]
at com.dotcms.repackage.org.directwebremoting.impl.CreatorModule.executeMethod(CreatorModule.java:241) ~[?:?]
at com.dotcms.repackage.org.directwebremoting.impl.DefaultRemoter.execute(DefaultRemoter.java:379) ~[?:?]
at com.dotcms.repackage.org.directwebremoting.impl.DefaultRemoter.execute(DefaultRemoter.java:332) ~[?:?]
at com.dotcms.repackage.org.directwebremoting.dwrp.BaseCallHandler.handle(BaseCallHandler.java:104) ~[?:?]
at com.dotcms.repackage.org.directwebremoting.servlet.UrlProcessor.handle(UrlProcessor.java:120) ~[?:?]
at com.dotcms.repackage.org.directwebremoting.servlet.DwrServlet.doPost(DwrServlet.java:141) ~[?:?]
at com.dotmarketing.servlets.DwrWrapperServlet.doPost(DwrWrapperServlet.java:60) ~[?:?]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:555) ~[?:?]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:623) ~[?:?]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:209) ~[?:?]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) ~[?:?]
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) ~[?:?]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178) ~[?:?]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) ~[?:?]
at com.dotmarketing.filters.CMSFilter.doFilterInternal(CMSFilter.java:181) ~[?:?]
at com.dotmarketing.filters.CMSFilter.doFilter(CMSFilter.java:61) ~[?:?]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178) ~[?:?]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) ~[?:?]
at com.dotcms.filters.interceptor.AbstractWebInterceptorSupportFilter.doFilter(AbstractWebInterceptorSupportFilter.java:90) ~[?:?]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178) ~[?:?]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) ~[?:?]
at com.dotcms.filters.interceptor.AbstractWebInterceptorSupportFilter.doFilter(AbstractWebInterceptorSupportFilter.java:90) ~[?:?]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178) ~[?:?]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) ~[?:?]
at com.dotcms.visitor.filter.servlet.VisitorFilter.doFilter(VisitorFilter.java:81) ~[?:?]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178) ~[?:?]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) ~[?:?]
at com.dotcms.vanityurl.filters.VanityURLFilter.doFilter(VanityURLFilter.java:107) ~[?:?]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178) ~[?:?]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) ~[?:?]
at org.tuckey.web.filters.urlrewrite.RuleChain.handleRewrite(RuleChain.java:176) ~[?:?]
at org.tuckey.web.filters.urlrewrite.RuleChain.doRules(RuleChain.java:145) ~[?:?]
at org.tuckey.web.filters.urlrewrite.UrlRewriter.processRequest(UrlRewriter.java:92) ~[?:?]
at org.tuckey.web.filters.urlrewrite.UrlRewriteFilter.doFilter(UrlRewriteFilter.java:389) ~[?:?]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178) ~[?:?]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) ~[?:?]
at com.dotmarketing.filters.TimeMachineFilter.doFilter(TimeMachineFilter.java:137) ~[?:?]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178) ~[?:?]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) ~[?:?]
at com.dotmarketing.filters.ThreadNameFilter.doFilter(ThreadNameFilter.java:88) ~[?:?]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178) ~[?:?]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) ~[?:?]
at com.dotmarketing.filters.CookiesFilter.doFilter(CookiesFilter.java:53) ~[?:?]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178) ~[?:?]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) ~[?:?]
at com.dotmarketing.filters.CharsetEncodingFilter.doFilter(CharsetEncodingFilter.java:99) ~[?:?]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178) ~[?:?]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) ~[?:?]
at com.dotcms.filters.interceptor.AbstractWebInterceptorSupportFilter.doFilter(AbstractWebInterceptorSupportFilter.java:90) ~[?:?]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178) ~[?:?]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) ~[?:?]
at org.apache.catalina.filters.HttpHeaderSecurityFilter.doFilter(HttpHeaderSecurityFilter.java:129) ~[?:?]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178) ~[?:?]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) ~[?:?]
at com.dotcms.filters.NormalizationFilter.doFilter(NormalizationFilter.java:89) ~[?:?]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178) ~[?:?]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) ~[?:?]
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:168) ~[?:?]
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90) ~[?:?]
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:481) ~[?:?]
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:130) ~[?:?]
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:670) ~[?:?]
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93) ~[?:?]
at org.apache.catalina.valves.RemoteIpValve.invoke(RemoteIpValve.java:765) ~[?:?]
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74) ~[?:?]
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) ~[?:?]
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:390) ~[?:?]
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) ~[?:?]
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:928) ~[?:?]
at org.apache.tomcat.util.net.Nio2Endpoint$SocketProcessor.doRun(Nio2Endpoint.java:1732) ~[?:?]
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) ~[?:?]
at org.apache.tomcat.util.net.AbstractEndpoint.processSocket(AbstractEndpoint.java:1295) ~[?:?]
at org.apache.tomcat.util.net.Nio2Endpoint.setSocketOptions(Nio2Endpoint.java:339) ~[?:?]
at org.apache.tomcat.util.net.Nio2Endpoint$Nio2Acceptor.completed(Nio2Endpoint.java:479) ~[?:?]
at org.apache.tomcat.util.net.Nio2Endpoint$Nio2Acceptor.completed(Nio2Endpoint.java:415) ~[?:?]
at java.base/sun.nio.ch.Invoker.invokeUnchecked(Invoker.java:127) ~[?:?]
at java.base/sun.nio.ch.Invoker.invokeDirect(Invoker.java:158) ~[?:?]
at java.base/sun.nio.ch.Invoker.invoke(Invoker.java:186) ~[?:?]
at java.base/sun.nio.ch.UnixAsynchronousServerSocketChannelImpl.onEvent(UnixAsynchronousServerSocketChannelImpl.java:193) ~[?:?]
at java.base/sun.nio.ch.KQueuePort$EventHandlerTask.run(KQueuePort.java:312) ~[?:?]
at java.base/sun.nio.ch.AsynchronousChannelGroupImpl$1.run(AsynchronousChannelGroupImpl.java:112) ~[?:?]
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) ~[?:?]
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) ~[?:?]
at java.base/java.lang.Thread.run(Thread.java:829) [?:?]
14:31:27.156 WARN web.ContentletWebAPIImpl - Unique field [hostName] could not be validated, as unique content Inode 'f26c7149-c0f3-471a-83f2-57caee665ae2' was not found. ES Index might need to be reindexed.
14:31:27.156 WARN web.ContentletWebAPIImpl - Unique field [hostName] could not be validated, as unique content Inode 'f26c7149-c0f3-471a-83f2-57caee665ae2' was not found. ES Index might need to be reindexed.
14:31:27.156 WARN web.ContentletWebAPIImpl - com.dotcms.content.elasticsearch.business.ESContentletAPIImpl.validateContentlet(ESContentletAPIImpl.java:7682)
Acceptance Criteria
Users should be able to re-create valid Sites without errors.
dotCMS Version
Latest master.
Proposed Objective
Core Features
Proposed Priority
Priority 3 - Average
External Links... Slack Conversations, Support Tickets, Figma Designs, etc.
No response
Assumptions & Initiation Needs
No response
Quality Assurance Notes & Workarounds
For now, you can bypass this problem by doing the following:
- Go to the System > Maintenance > Index portlet.
- In the
Reindex:
dropdown, select theHost
value. - Click
Reindex
and wait. - Go back to the System > Sites portlet, and enter
one.com
for the copied Site. The error message will NOT be displayed this time.
Sub-Tasks & Estimates
No response