153 views

Description

Edge distribution downloads from the UI installer or self-upgrade are not using the web proxy settings.
These downloads will hit the instance directly and rely on the server having access to the Internet, failing if no such access is available.

Steps to Reproduce

 

  1. Set up an Edge proxy on a server with no Internet access, with the forward web proxy doing the outbound connection to the ServiceNow server.

  2. Schedule an auto-upgrade.

    The upgrade does not occur and the Edge Proxy server wrapper_<date>.log contains the following messages.

    The Edge Proxy server log shows:

    "...
    INFO | jvm 1 | 2017/08/28 13:24:27.788 | Aug 28, 2017 1:24:27 PM com.snc.dist.downloader.DistUpgradeDownloader downloadThroughInstanceProxy
    INFO | jvm 1 | 2017/08/28 13:24:27.788 | INFO: Downloading dist 'edgeencryption-jakarta-05-03-2017__patch2-07-25-2017_08-11-2017_0919-linux-x86-64.zip' through proxy from https://instance.service-now.com:443/api/now/dist_download_proxy/download_to_attachment/edgeencryption-jakarta-05-03-2017__patch2-07-25-2017_08-11-2017_0919-linux-x86-64.zip
    INFO | jvm 1 | 2017/08/28 13:24:42.919 | Aug 28, 2017 1:24:42 PM com.snc.dist.downloader.DistUpgradeDownloader downloadThroughInstanceProxy
    INFO | jvm 1 | 2017/08/28 13:24:42.919 | SEVERE: Unable to contact server
    INFO | jvm 1 | 2017/08/28 13:24:42.919 | com.snc.dist.downloader.DistDownloadException: Unable to contact server
    INFO | jvm 1 | 2017/08/28 13:24:42.919 | at com.snc.dist.downloader.DistUpgradeDownloader.sendRequest(DistUpgradeDownloader.java:271)
    INFO | jvm 1 | 2017/08/28 13:24:42.919 | at com.snc.dist.downloader.DistUpgradeDownloader.downloadThroughInstanceProxy(DistUpgradeDownloader.java:168)
    INFO | jvm 1 | 2017/08/28 13:24:42.919 | at com.snc.edgeencryption.CloudEdgeConfigClient.checkForUpgrade(CloudEdgeConfigClient.java:917)
    INFO | jvm 1 | 2017/08/28 13:24:42.919 | at com.snc.edgeencryption.CloudEdgeConfigClient.access$500(CloudEdgeConfigClient.java:82)
    INFO | jvm 1 | 2017/08/28 13:24:42.919 | at com.snc.edgeencryption.CloudEdgeConfigClient$CloudEdgeConfigClientPing.run(CloudEdgeConfigClient.java:820)
    INFO | jvm 1 | 2017/08/28 13:24:42.919 | at java.lang.Thread.run(Thread.java:745)
    INFO | jvm 1 | 2017/08/28 13:24:42.919 | Caused by: java.util.concurrent.ExecutionException: java.net.SocketTimeoutException: Connect Timeout
    INFO | jvm 1 | 2017/08/28 13:24:42.919 | at org.eclipse.jetty.client.util.InputStreamResponseListener.get(InputStreamResponseListener.java:229)
    INFO | jvm 1 | 2017/08/28 13:24:42.919 | at com.snc.dist.downloader.DistUpgradeDownloader.sendRequest(DistUpgradeDownloader.java:255)
    INFO | jvm 1 | 2017/08/28 13:24:42.919 | ... 5 more
    INFO | jvm 1 | 2017/08/28 13:24:42.919 | Caused by: java.net.SocketTimeoutException: Connect Timeout
    INFO | jvm 1 | 2017/08/28 13:24:42.919 | at org.eclipse.jetty.io.ManagedSelector$ConnectTimeout.run(ManagedSelector.java:683)
    INFO | jvm 1 | 2017/08/28 13:24:42.919 | at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    INFO | jvm 1 | 2017/08/28 13:24:42.919 | at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    INFO | jvm 1 | 2017/08/28 13:24:42.919 | at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)
    INFO | jvm 1 | 2017/08/28 13:24:42.919 | at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
    INFO | jvm 1 | 2017/08/28 13:24:42.919 | at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    INFO | jvm 1 | 2017/08/28 13:24:42.920 | at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    INFO | jvm 1 | 2017/08/28 13:24:42.920 | ... 1 more
    INFO | jvm 1 | 2017/08/28 13:24:42.920 |
    ..."INFO | jvm 1 | 2017/08/28 13:24:27.788 | Aug 28, 2017 1:24:27 PM com.snc.dist.downloader.DistUpgradeDownloader downloadThroughInstanceProxy
    INFO | jvm 1 | 2017/08/28 13:24:27.788 | INFO: Downloading dist 'edgeencryption-jakarta-05-03-2017__patch2-07-25-2017_08-11-2017_0919-linux-x86-64.zip' through proxy from https://instance.service-now.com:443/api/now/dist_download_proxy/download_to_attachment/edgeencryption-jakarta-05-03-2017__patch2-07-25-2017_08-11-2017_0919-linux-x86-64.zip
    INFO | jvm 1 | 2017/08/28 13:24:42.919 | Aug 28, 2017 1:24:42 PM com.snc.dist.downloader.DistUpgradeDownloader downloadThroughInstanceProxy
    INFO | jvm 1 | 2017/08/28 13:24:42.919 | SEVERE: Unable to contact server
    INFO | jvm 1 | 2017/08/28 13:24:42.919 | com.snc.dist.downloader.DistDownloadException: Unable to contact server
    INFO | jvm 1 | 2017/08/28 13:24:42.919 | at com.snc.dist.downloader.DistUpgradeDownloader.sendRequest(DistUpgradeDownloader.java:271)
    INFO | jvm 1 | 2017/08/28 13:24:42.919 | at com.snc.dist.downloader.DistUpgradeDownloader.downloadThroughInstanceProxy(DistUpgradeDownloader.java:168)
    INFO | jvm 1 | 2017/08/28 13:24:42.919 | at com.snc.edgeencryption.CloudEdgeConfigClient.checkForUpgrade(CloudEdgeConfigClient.java:917)
    INFO | jvm 1 | 2017/08/28 13:24:42.919 | at com.snc.edgeencryption.CloudEdgeConfigClient.access$500(CloudEdgeConfigClient.java:82)
    INFO | jvm 1 | 2017/08/28 13:24:42.919 | at com.snc.edgeencryption.CloudEdgeConfigClient$CloudEdgeConfigClientPing.run(CloudEdgeConfigClient.java:820)
    INFO | jvm 1 | 2017/08/28 13:24:42.919 | at java.lang.Thread.run(Thread.java:745)
    INFO | jvm 1 | 2017/08/28 13:24:42.919 | Caused by: java.util.concurrent.ExecutionException: java.net.SocketTimeoutException: Connect Timeout
    INFO | jvm 1 | 2017/08/28 13:24:42.919 | at org.eclipse.jetty.client.util.InputStreamResponseListener.get(InputStreamResponseListener.java:229)
    INFO | jvm 1 | 2017/08/28 13:24:42.919 | at com.snc.dist.downloader.DistUpgradeDownloader.sendRequest(DistUpgradeDownloader.java:255)
    INFO | jvm 1 | 2017/08/28 13:24:42.919 | ... 5 more
    INFO | jvm 1 | 2017/08/28 13:24:42.919 | Caused by: java.net.SocketTimeoutException: Connect Timeout
    INFO | jvm 1 | 2017/08/28 13:24:42.919 | at org.eclipse.jetty.io.ManagedSelector$ConnectTimeout.run(ManagedSelector.java:683)
    INFO | jvm 1 | 2017/08/28 13:24:42.919 | at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    INFO | jvm 1 | 2017/08/28 13:24:42.919 | at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    INFO | jvm 1 | 2017/08/28 13:24:42.919 | at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)
    INFO | jvm 1 | 2017/08/28 13:24:42.919 | at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
    INFO | jvm 1 | 2017/08/28 13:24:42.919 | at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    INFO | jvm 1 | 2017/08/28 13:24:42.920 | at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    INFO | jvm 1 | 2017/08/28 13:24:42.920 | ... 1 more
    INFO | jvm 1 | 2017/08/28 13:24:42.920 |
    ..."INFO | jvm 1 | 2017/08/28 13:24:27.788 | Aug 28, 2017 1:24:27 PM com.snc.dist.downloader.DistUpgradeDownloader downloadThroughInstanceProxy
    INFO | jvm 1 | 2017/08/28 13:24:27.788 | INFO: Downloading dist 'edgeencryption-jakarta-05-03-2017__patch2-07-25-2017_08-11-2017_0919-linux-x86-64.zip' through proxy from https://instance.service-now.com:443/api/now/dist_download_proxy/download_to_attachment/edgeencryption-jakarta-05-03-2017__patch2-07-25-2017_08-11-2017_0919-linux-x86-64.zip
    INFO | jvm 1 | 2017/08/28 13:24:42.919 | Aug 28, 2017 1:24:42 PM com.snc.dist.downloader.DistUpgradeDownloader downloadThroughInstanceProxy
    INFO | jvm 1 | 2017/08/28 13:24:42.919 | SEVERE: Unable to contact server
    INFO | jvm 1 | 2017/08/28 13:24:42.919 | com.snc.dist.downloader.DistDownloadException: Unable to contact server
    INFO | jvm 1 | 2017/08/28 13:24:42.919 | at com.snc.dist.downloader.DistUpgradeDownloader.sendRequest(DistUpgradeDownloader.java:271)
    INFO | jvm 1 | 2017/08/28 13:24:42.919 | at com.snc.dist.downloader.DistUpgradeDownloader.downloadThroughInstanceProxy(DistUpgradeDownloader.java:168)
    INFO | jvm 1 | 2017/08/28 13:24:42.919 | at com.snc.edgeencryption.CloudEdgeConfigClient.checkForUpgrade(CloudEdgeConfigClient.java:917)
    INFO | jvm 1 | 2017/08/28 13:24:42.919 | at com.snc.edgeencryption.CloudEdgeConfigClient.access$500(CloudEdgeConfigClient.java:82)
    INFO | jvm 1 | 2017/08/28 13:24:42.919 | at com.snc.edgeencryption.CloudEdgeConfigClient$CloudEdgeConfigClientPing.run(CloudEdgeConfigClient.java:820)
    INFO | jvm 1 | 2017/08/28 13:24:42.919 | at java.lang.Thread.run(Thread.java:745)
    INFO | jvm 1 | 2017/08/28 13:24:42.919 | Caused by: java.util.concurrent.ExecutionException: java.net.SocketTimeoutException: Connect Timeout
    INFO | jvm 1 | 2017/08/28 13:24:42.919 | at org.eclipse.jetty.client.util.InputStreamResponseListener.get(InputStreamResponseListener.java:229)
    INFO | jvm 1 | 2017/08/28 13:24:42.919 | at com.snc.dist.downloader.DistUpgradeDownloader.sendRequest(DistUpgradeDownloader.java:255)
    INFO | jvm 1 | 2017/08/28 13:24:42.919 | ... 5 more
    INFO | jvm 1 | 2017/08/28 13:24:42.919 | Caused by: java.net.SocketTimeoutException: Connect Timeout
    INFO | jvm 1 | 2017/08/28 13:24:42.919 | at org.eclipse.jetty.io.ManagedSelector$ConnectTimeout.run(ManagedSelector.java:683)
    INFO | jvm 1 | 2017/08/28 13:24:42.919 | at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    INFO | jvm 1 | 2017/08/28 13:24:42.919 | at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    INFO | jvm 1 | 2017/08/28 13:24:42.919 | at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)
    INFO | jvm 1 | 2017/08/28 13:24:42.919 | at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
    INFO | jvm 1 | 2017/08/28 13:24:42.919 | at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    INFO | jvm 1 | 2017/08/28 13:24:42.920 | at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    INFO | jvm 1 | 2017/08/28 13:24:42.920 | ... 1 more
    INFO | jvm 1 | 2017/08/28 13:24:42.920 |
    ..."INFO | jvm 1 | 2017/08/28 13:24:27.788 | Aug 28, 2017 1:24:27 PM com.snc.dist.downloader.DistUpgradeDownloader downloadThroughInstanceProxy
    INFO | jvm 1 | 2017/08/28 13:24:27.788 | INFO: Downloading dist 'edgeencryption-jakarta-05-03-2017__patch2-07-25-2017_08-11-2017_0919-linux-x86-64.zip' through proxy from https://instance.service-now.com:443/api/now/dist_download_proxy/download_to_attachment/edgeencryption-jakarta-05-03-2017__patch2-07-25-2017_08-11-2017_0919-linux-x86-64.zip
    INFO | jvm 1 | 2017/08/28 13:24:42.919 | Aug 28, 2017 1:24:42 PM com.snc.dist.downloader.DistUpgradeDownloader downloadThroughInstanceProxy
    INFO | jvm 1 | 2017/08/28 13:24:42.919 | SEVERE: Unable to contact server
    INFO | jvm 1 | 2017/08/28 13:24:42.919 | com.snc.dist.downloader.DistDownloadException: Unable to contact server
    INFO | jvm 1 | 2017/08/28 13:24:42.919 | at com.snc.dist.downloader.DistUpgradeDownloader.sendRequest(DistUpgradeDownloader.java:271)
    INFO | jvm 1 | 2017/08/28 13:24:42.919 | at com.snc.dist.downloader.DistUpgradeDownloader.downloadThroughInstanceProxy(DistUpgradeDownloader.java:168)
    INFO | jvm 1 | 2017/08/28 13:24:42.919 | at com.snc.edgeencryption.CloudEdgeConfigClient.checkForUpgrade(CloudEdgeConfigClient.java:917)
    INFO | jvm 1 | 2017/08/28 13:24:42.919 | at com.snc.edgeencryption.CloudEdgeConfigClient.access$500(CloudEdgeConfigClient.java:82)
    INFO | jvm 1 | 2017/08/28 13:24:42.919 | at com.snc.edgeencryption.CloudEdgeConfigClient$CloudEdgeConfigClientPing.run(CloudEdgeConfigClient.java:820)
    INFO | jvm 1 | 2017/08/28 13:24:42.919 | at java.lang.Thread.run(Thread.java:745)
    INFO | jvm 1 | 2017/08/28 13:24:42.919 | Caused by: java.util.concurrent.ExecutionException: java.net.SocketTimeoutException: Connect Timeout
    INFO | jvm 1 | 2017/08/28 13:24:42.919 | at org.eclipse.jetty.client.util.InputStreamResponseListener.get(InputStreamResponseListener.java:229)
    INFO | jvm 1 | 2017/08/28 13:24:42.919 | at com.snc.dist.downloader.DistUpgradeDownloader.sendRequest(DistUpgradeDownloader.java:255)
    INFO | jvm 1 | 2017/08/28 13:24:42.919 | ... 5 more
    INFO | jvm 1 | 2017/08/28 13:24:42.919 | Caused by: java.net.SocketTimeoutException: Connect Timeout
    INFO | jvm 1 | 2017/08/28 13:24:42.919 | at org.eclipse.jetty.io.ManagedSelector$ConnectTimeout.run(ManagedSelector.java:683)
    INFO | jvm 1 | 2017/08/28 13:24:42.919 | at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    INFO | jvm 1 | 2017/08/28 13:24:42.919 | at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    INFO | jvm 1 | 2017/08/28 13:24:42.919 | at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)
    INFO | jvm 1 | 2017/08/28 13:24:42.919 | at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
    INFO | jvm 1 | 2017/08/28 13:24:42.919 | at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    INFO | jvm 1 | 2017/08/28 13:24:42.920 | at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    INFO | jvm 1 | 2017/08/28 13:24:42.920 | ... 1 more
    INFO | jvm 1 | 2017/08/28 13:24:42.920 |
    ..."INFO | jvm 1 | 2017/08/28 13:24:27.788 | Aug 28, 2017 1:24:27 PM com.snc.dist.downloader.DistUpgradeDownloader downloadThroughInstanceProxy
    INFO | jvm 1 | 2017/08/28 13:24:27.788 | INFO: Downloading dist 'edgeencryption-jakarta-05-03-2017__patch2-07-25-2017_08-11-2017_0919-linux-x86-64.zip' through proxy from https://instance.service-now.com:443/api/now/dist_download_proxy/download_to_attachment/edgeencryption-jakarta-05-03-2017__patch2-07-25-2017_08-11-2017_0919-linux-x86-64.zip
    INFO | jvm 1 | 2017/08/28 13:24:42.919 | Aug 28, 2017 1:24:42 PM com.snc.dist.downloader.DistUpgradeDownloader downloadThroughInstanceProxy
    INFO | jvm 1 | 2017/08/28 13:24:42.919 | SEVERE: Unable to contact server
    INFO | jvm 1 | 2017/08/28 13:24:42.919 | com.snc.dist.downloader.DistDownloadException: Unable to contact server
    INFO | jvm 1 | 2017/08/28 13:24:42.919 | at com.snc.dist.downloader.DistUpgradeDownloader.sendRequest(DistUpgradeDownloader.java:271)
    INFO | jvm 1 | 2017/08/28 13:24:42.919 | at com.snc.dist.downloader.DistUpgradeDownloader.downloadThroughInstanceProxy(DistUpgradeDownloader.java:168)
    INFO | jvm 1 | 2017/08/28 13:24:42.919 | at com.snc.edgeencryption.CloudEdgeConfigClient.checkForUpgrade(CloudEdgeConfigClient.java:917)
    INFO | jvm 1 | 2017/08/28 13:24:42.919 | at com.snc.edgeencryption.CloudEdgeConfigClient.access$500(CloudEdgeConfigClient.java:82)
    INFO | jvm 1 | 2017/08/28 13:24:42.919 | at com.snc.edgeencryption.CloudEdgeConfigClient$CloudEdgeConfigClientPing.run(CloudEdgeConfigClient.java:820)
    INFO | jvm 1 | 2017/08/28 13:24:42.919 | at java.lang.Thread.run(Thread.java:745)
    INFO | jvm 1 | 2017/08/28 13:24:42.919 | Caused by: java.util.concurrent.ExecutionException: java.net.SocketTimeoutException: Connect Timeout
    INFO | jvm 1 | 2017/08/28 13:24:42.919 | at org.eclipse.jetty.client.util.InputStreamResponseListener.get(InputStreamResponseListener.java:229)
    INFO | jvm 1 | 2017/08/28 13:24:42.919 | at com.snc.dist.downloader.DistUpgradeDownloader.sendRequest(DistUpgradeDownloader.java:255)
    INFO | jvm 1 | 2017/08/28 13:24:42.919 | ... 5 more
    INFO | jvm 1 | 2017/08/28 13:24:42.919 | Caused by: java.net.SocketTimeoutException: Connect Timeout
    INFO | jvm 1 | 2017/08/28 13:24:42.919 | at org.eclipse.jetty.io.ManagedSelector$ConnectTimeout.run(ManagedSelector.java:683)
    INFO | jvm 1 | 2017/08/28 13:24:42.919 | at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    INFO | jvm 1 | 2017/08/28 13:24:42.919 | at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    INFO | jvm 1 | 2017/08/28 13:24:42.919 | at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)
    INFO | jvm 1 | 2017/08/28 13:24:42.919 | at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
    INFO | jvm 1 | 2017/08/28 13:24:42.919 | at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    INFO | jvm 1 | 2017/08/28 13:24:42.920 | at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    INFO | jvm 1 | 2017/08/28 13:24:42.920 | ... 1 more
    INFO | jvm 1 | 2017/08/28 13:24:42.920 |
    ..."

    The instance node log shows:

    "2017-08-28 10:24:45 (357) http-50 New transaction 5F05C382DB300300309257335E9619D3 #384485 /sn_edge_encryption_edge_encryption.do
    2017-08-28 10:24:45 (363) Edge Encryption-thread-2 SYSTEM Logging event: SNC.Auth.DB.Login.Success with parm1: user_name=edge and parm2: remoteAddr=164.13.34.203
    2017-08-28 10:24:45 (364) Edge Encryption-thread-2 SYSTEM WARNING *** WARNING *** Cookie token not in database: SCv2:lSEiMxR6cesA43B5qDywkdcZuuhAvfho
    2017-08-28 10:24:45 (364) Edge Encryption-thread-2 SYSTEM WARNING *** WARNING *** aborted activity cookie update: U0N2MjpsU0VpTXhSNmNlc0E0M0I1cUR5d2tkY1p1dWhBdmZobw
    2017-08-28 10:24:45 (365) Edge Encryption-thread-2 5F05C382DB300300309257335E9619D3 #384485 /sn_edge_encryption_edge_encryption.do Parameters -------------------------
    edge_encryption_pool=
    2017-08-28 10:24:45 (367) Edge Encryption-thread-2 5F05C382DB300300309257335E9619D3 sn_edge_encryption: EdgeEncryptionProcessor Params: {"failure_reason":"Unable to contact server","schedule_id":"f6ef3eeedb7ccb00309257335e961918"}
    2017-08-28 10:24:45 (370) Edge Encryption-thread-2 5F05C382DB300300309257335E9619D3 *** End #384485 /sn_edge_encryption_edge_encryption.do, user: edge_proxy, total time: 0:00:00.013, processing time: 0:00:00.013, SQL time: 0:00:00.001 (count: 10) "

 

 

Workaround

This issue is under review. To receive notifications when more information is available, subscribe to this Known Error article by clicking the Subscribe button at the top right of the article. If you are able to upgrade, review the Fixed In field to determine whether any versions have a permanent fix.

Until a permanent fix is available, perform a manual upgrade. See the following product documentation topics for more information:

 

 


Related Problem: PRB1172763

Seen In

There is no data to report.

Fixed In

Jakarta Patch 4
Kingston

Associated Community Threads

There is no data to report.

Article Information

Last Updated:2018-03-19 08:14:25
Published:2017-09-19