Ref: remove duplicate handle code
This commit is contained in:
@@ -41,25 +41,21 @@ import java.util.Timer;
|
|||||||
import java.util.TimerTask;
|
import java.util.TimerTask;
|
||||||
import java.util.concurrent.ArrayBlockingQueue;
|
import java.util.concurrent.ArrayBlockingQueue;
|
||||||
import java.util.concurrent.BlockingQueue;
|
import java.util.concurrent.BlockingQueue;
|
||||||
import java.util.concurrent.ThreadLocalRandom;
|
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import com.sheepit.client.Error.ServerCode;
|
import com.sheepit.client.Error.ServerCode;
|
||||||
import com.sheepit.client.Error.Type;
|
import com.sheepit.client.Error.Type;
|
||||||
import com.sheepit.client.datamodel.Chunk;
|
import com.sheepit.client.datamodel.Chunk;
|
||||||
import com.sheepit.client.exception.SheepItException;
|
import com.sheepit.client.exception.SheepItException;
|
||||||
import com.sheepit.client.exception.SheepItExceptionBadResponseFromServer;
|
|
||||||
import com.sheepit.client.exception.SheepItExceptionNoRendererAvailable;
|
import com.sheepit.client.exception.SheepItExceptionNoRendererAvailable;
|
||||||
import com.sheepit.client.exception.SheepItExceptionNoRightToRender;
|
import com.sheepit.client.exception.SheepItExceptionNoRightToRender;
|
||||||
import com.sheepit.client.exception.SheepItExceptionNoSession;
|
import com.sheepit.client.exception.SheepItExceptionNoSession;
|
||||||
import com.sheepit.client.exception.SheepItExceptionNoSpaceLeftOnDevice;
|
import com.sheepit.client.exception.SheepItExceptionNoSpaceLeftOnDevice;
|
||||||
import com.sheepit.client.exception.SheepItExceptionPathInvalid;
|
import com.sheepit.client.exception.SheepItExceptionPathInvalid;
|
||||||
import com.sheepit.client.exception.SheepItExceptionNoWritePermission;
|
import com.sheepit.client.exception.SheepItExceptionNoWritePermission;
|
||||||
import com.sheepit.client.exception.SheepItExceptionServerInMaintenance;
|
|
||||||
import com.sheepit.client.exception.SheepItExceptionServerOverloaded;
|
|
||||||
import com.sheepit.client.exception.SheepItExceptionSessionDisabled;
|
import com.sheepit.client.exception.SheepItExceptionSessionDisabled;
|
||||||
import com.sheepit.client.exception.SheepItExceptionSessionDisabledDenoisingNotSupported;
|
import com.sheepit.client.exception.SheepItExceptionSessionDisabledDenoisingNotSupported;
|
||||||
import com.sheepit.client.exception.SheepItServerDown;
|
import com.sheepit.client.exception.SheepItExceptionWithRequiredWait;
|
||||||
import com.sheepit.client.hardware.cpu.CPU;
|
import com.sheepit.client.hardware.cpu.CPU;
|
||||||
import com.sheepit.client.os.OS;
|
import com.sheepit.client.os.OS;
|
||||||
|
|
||||||
@@ -267,11 +263,15 @@ import okhttp3.HttpUrl;
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (SheepItServerDown e) {
|
catch (SheepItExceptionWithRequiredWait e) {
|
||||||
int wait = ThreadLocalRandom.current().nextInt(10, 30 + 1); // max is exclusive
|
// exception example:
|
||||||
int time_sleep = 1000 * 60 * wait;
|
// SheepItExceptionServerInMaintenance
|
||||||
this.gui.status(String.format("Cannot connect to the server. Please check your connectivity. Will try again at %tR",
|
// SheepItExceptionServerOverloaded
|
||||||
new Date(new Date().getTime() + time_sleep)));
|
// SheepItServerDown
|
||||||
|
// SheepItExceptionBadResponseFromServer
|
||||||
|
|
||||||
|
int time_sleep = e.getWaitDuration();
|
||||||
|
this.gui.status(String.format(e.getHumanText(), new Date(new Date().getTime() + time_sleep)));
|
||||||
|
|
||||||
if (this.activeSleep(time_sleep) == false) {
|
if (this.activeSleep(time_sleep) == false) {
|
||||||
return -3;
|
return -3;
|
||||||
@@ -279,43 +279,6 @@ import okhttp3.HttpUrl;
|
|||||||
this.log.removeCheckPoint(step);
|
this.log.removeCheckPoint(step);
|
||||||
continue; // go back to ask job
|
continue; // go back to ask job
|
||||||
}
|
}
|
||||||
catch (SheepItExceptionServerOverloaded e) {
|
|
||||||
int wait = ThreadLocalRandom.current().nextInt(10, 30 + 1); // max is exclusive
|
|
||||||
int time_sleep = 1000 * 60 * wait;
|
|
||||||
this.gui.status(String.format("The server is overloaded and cannot allocate a job. Will try again at %tR",
|
|
||||||
new Date(new Date().getTime() + time_sleep)));
|
|
||||||
|
|
||||||
if (this.activeSleep(time_sleep) == false) {
|
|
||||||
return -3;
|
|
||||||
}
|
|
||||||
|
|
||||||
this.log.removeCheckPoint(step);
|
|
||||||
continue; // go back to ask job
|
|
||||||
}
|
|
||||||
catch (SheepItExceptionServerInMaintenance e) {
|
|
||||||
int wait = ThreadLocalRandom.current().nextInt(20, 30 + 1); // max is exclusive
|
|
||||||
int time_sleep = 1000 * 60 * wait;
|
|
||||||
this.gui.status(String.format("The server is under maintenance and cannot allocate a job. Will try again at %tR",
|
|
||||||
new Date(new Date().getTime() + time_sleep)));
|
|
||||||
|
|
||||||
if (this.activeSleep(time_sleep) == false) {
|
|
||||||
return -3;
|
|
||||||
}
|
|
||||||
this.log.removeCheckPoint(step);
|
|
||||||
continue; // go back to ask job
|
|
||||||
}
|
|
||||||
catch (SheepItExceptionBadResponseFromServer e) {
|
|
||||||
int wait = ThreadLocalRandom.current().nextInt(15, 30 + 1); // max is exclusive
|
|
||||||
int time_sleep = 1000 * 60 * wait;
|
|
||||||
this.gui.status(String.format("Bad answer from the server. Will try again at %tR", new Date(new Date().getTime() + time_sleep)));
|
|
||||||
|
|
||||||
if (this.activeSleep(time_sleep) == false) {
|
|
||||||
return -3;
|
|
||||||
}
|
|
||||||
|
|
||||||
this.log.removeCheckPoint(step);
|
|
||||||
continue; // go back to ask job
|
|
||||||
}
|
|
||||||
catch (SheepItException e) {
|
catch (SheepItException e) {
|
||||||
this.gui.error("Client::run exception requestJob (1) " + e.getMessage());
|
this.gui.error("Client::run exception requestJob (1) " + e.getMessage());
|
||||||
StringWriter sw = new StringWriter();
|
StringWriter sw = new StringWriter();
|
||||||
|
|||||||
@@ -19,7 +19,9 @@
|
|||||||
|
|
||||||
package com.sheepit.client.exception;
|
package com.sheepit.client.exception;
|
||||||
|
|
||||||
public class SheepItExceptionBadResponseFromServer extends SheepItException {
|
import java.util.concurrent.ThreadLocalRandom;
|
||||||
|
|
||||||
|
public class SheepItExceptionBadResponseFromServer extends SheepItExceptionWithRequiredWait {
|
||||||
public SheepItExceptionBadResponseFromServer() {
|
public SheepItExceptionBadResponseFromServer() {
|
||||||
super();
|
super();
|
||||||
}
|
}
|
||||||
@@ -27,4 +29,12 @@ public class SheepItExceptionBadResponseFromServer extends SheepItException {
|
|||||||
public SheepItExceptionBadResponseFromServer(String message_) {
|
public SheepItExceptionBadResponseFromServer(String message_) {
|
||||||
super(message_);
|
super(message_);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getHumanText() {
|
||||||
|
return "Bad answer from the server. Will try again at %tR";
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getWaitDuration() {
|
||||||
|
return 1000 * 60 * ThreadLocalRandom.current().nextInt(15, 30 + 1);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,7 +19,9 @@
|
|||||||
|
|
||||||
package com.sheepit.client.exception;
|
package com.sheepit.client.exception;
|
||||||
|
|
||||||
public class SheepItExceptionServerInMaintenance extends SheepItException {
|
import java.util.concurrent.ThreadLocalRandom;
|
||||||
|
|
||||||
|
public class SheepItExceptionServerInMaintenance extends SheepItExceptionWithRequiredWait {
|
||||||
public SheepItExceptionServerInMaintenance() {
|
public SheepItExceptionServerInMaintenance() {
|
||||||
super();
|
super();
|
||||||
}
|
}
|
||||||
@@ -27,4 +29,12 @@ public class SheepItExceptionServerInMaintenance extends SheepItException {
|
|||||||
public SheepItExceptionServerInMaintenance(String message_) {
|
public SheepItExceptionServerInMaintenance(String message_) {
|
||||||
super(message_);
|
super(message_);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getHumanText() {
|
||||||
|
return "The server is under maintenance and cannot allocate a job. Will try again at %tR";
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getWaitDuration() {
|
||||||
|
return 1000 * 60 * ThreadLocalRandom.current().nextInt(20, 30 + 1);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,7 +19,9 @@
|
|||||||
|
|
||||||
package com.sheepit.client.exception;
|
package com.sheepit.client.exception;
|
||||||
|
|
||||||
public class SheepItExceptionServerOverloaded extends SheepItException {
|
import java.util.concurrent.ThreadLocalRandom;
|
||||||
|
|
||||||
|
public class SheepItExceptionServerOverloaded extends SheepItExceptionWithRequiredWait {
|
||||||
public SheepItExceptionServerOverloaded() {
|
public SheepItExceptionServerOverloaded() {
|
||||||
super();
|
super();
|
||||||
}
|
}
|
||||||
@@ -27,4 +29,12 @@ public class SheepItExceptionServerOverloaded extends SheepItException {
|
|||||||
public SheepItExceptionServerOverloaded(String message_) {
|
public SheepItExceptionServerOverloaded(String message_) {
|
||||||
super(message_);
|
super(message_);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getHumanText() {
|
||||||
|
return "The server is overloaded and cannot allocate a job. Will try again at %tR";
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getWaitDuration() {
|
||||||
|
return 1000 * 60 * ThreadLocalRandom.current().nextInt(10, 30 + 1);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,46 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2023 Laurent CLOUET
|
||||||
|
* Author Laurent CLOUET <laurent.clouet@nopnop.net>
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU General Public License
|
||||||
|
* as published by the Free Software Foundation; version 2
|
||||||
|
* of the License.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.sheepit.client.exception;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* When a request to the server generate this exception.
|
||||||
|
* The client must wait a bit before retrying.
|
||||||
|
*/
|
||||||
|
public class SheepItExceptionWithRequiredWait extends SheepItException {
|
||||||
|
public SheepItExceptionWithRequiredWait() {
|
||||||
|
super();
|
||||||
|
}
|
||||||
|
|
||||||
|
public SheepItExceptionWithRequiredWait(String message_) {
|
||||||
|
super(message_);
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getHumanText() {
|
||||||
|
return "Please wait a bit";
|
||||||
|
}
|
||||||
|
|
||||||
|
/** how much time, it needs to wait
|
||||||
|
*
|
||||||
|
* @return duration in ms
|
||||||
|
*/
|
||||||
|
public int getWaitDuration() {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -19,10 +19,12 @@
|
|||||||
|
|
||||||
package com.sheepit.client.exception;
|
package com.sheepit.client.exception;
|
||||||
|
|
||||||
|
import java.util.concurrent.ThreadLocalRandom;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Server down (server side error) or unreachable (client side error)
|
* Server down (server side error) or unreachable (client side error)
|
||||||
*/
|
*/
|
||||||
public class SheepItServerDown extends SheepItException {
|
public class SheepItServerDown extends SheepItExceptionWithRequiredWait {
|
||||||
public SheepItServerDown() {
|
public SheepItServerDown() {
|
||||||
super();
|
super();
|
||||||
}
|
}
|
||||||
@@ -30,4 +32,12 @@ public class SheepItServerDown extends SheepItException {
|
|||||||
public SheepItServerDown(String message_) {
|
public SheepItServerDown(String message_) {
|
||||||
super(message_);
|
super(message_);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getHumanText() {
|
||||||
|
return "Cannot connect to the server. Please check your connectivity. Will try again at %tR";
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getWaitDuration() {
|
||||||
|
return 1000 * 60 * ThreadLocalRandom.current().nextInt(10, 30 + 1);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user