Changeset 2c45378c


Ignore:
Timestamp:
Mar 22, 2015 10:08:48 AM (6 years ago)
Author:
zzz <zzz@…>
Branches:
master
Children:
a0ab72e
Parents:
44c7518
Message:

Console: Better status feedback on manual reseed from URL
Reseed: Better status feedback and cleanup in summary bar

Files:
7 edited

Legend:

Unmodified
Added
Removed
  • apps/routerconsole/java/src/net/i2p/router/web/ConfigClientsHandler.java

    r44c7518 r2c45378c  
    451451            if (mgr == null)
    452452                return;
    453             for (int i = 0; i < 10; i++) {
     453            for (int i = 0; i < 20; i++) {
    454454                if (!mgr.isUpdateInProgress(PLUGIN)) {
    455455                    tmp.delete();
     
    457457                }
    458458                try {
    459                    Thread.sleep(1000);
     459                   Thread.sleep(500);
    460460                } catch (InterruptedException ie) {}
    461461             }
  • apps/routerconsole/java/src/net/i2p/router/web/ConfigReseedHandler.java

    r44c7518 r2c45378c  
    5050                } else {
    5151                    // wait a while for completion but not forever
    52                     for (int i = 0; i < 20; i++) {
     52                    for (int i = 0; i < 40; i++) {
    5353                        try {
    54                             Thread.sleep(1000);
     54                            Thread.sleep(500);
    5555                        } catch (InterruptedException ie) {}
    56                         if (!_context.netDb().reseedChecker().inProgress()) {
    57                             String status = _context.netDb().reseedChecker().getStatus();
    58                             if (status.length() > 0)
    59                                 addFormNotice(status);
    60                             else
    61                                 addFormNotice(_("Ressed complete, check summary bar for status"));
    62                             return;
    63                         }
     56                        if (!_context.netDb().reseedChecker().inProgress())
     57                            break;
    6458                    }
    65                     if (_context.netDb().reseedChecker().inProgress()) {
    66                         String status = _context.netDb().reseedChecker().getStatus();
    67                         if (status.length() > 0)
    68                             addFormNotice(status);
    69                         else
    70                             addFormNotice(_("Ressed in progress, check summary bar for status"));
     59                    String status = _context.netDb().reseedChecker().getStatus();
     60                    String error = _context.netDb().reseedChecker().getError();
     61                    if (error.length() > 0) {
     62                        addFormErrorNoEscape(error);
     63                    } else if (status.length() > 0) {
     64                        addFormNoticeNoEscape(status);
     65                    } else if (_context.netDb().reseedChecker().inProgress()) {
     66                        addFormNotice(_("Reseed in progress, check summary bar for status"));
     67                    } else {
     68                        addFormNotice(_("Reseed complete, check summary bar for status"));
    7169                    }
    7270                }
  • apps/routerconsole/java/src/net/i2p/router/web/FormHandler.java

    r44c7518 r2c45378c  
    154154   
    155155    /**
     156     * Add an error message to display
     157     * Use if it includes a link or other formatting.
     158     * Does not escape '<' and '>' before queueing
     159     * @since 0.9.19
     160     */
     161    protected void addFormErrorNoEscape(String msg) {
     162        if (msg == null) return;
     163        _errors.add(msg);
     164    }
     165   
     166    /**
    156167     * Display everything, wrap it in a div for consistent presentation
    157168     *
  • history.txt

    r44c7518 r2c45378c  
     12015-03-22 zzz
     2 * Console: Better status feedback on manual reseed from URL
     3 * NetDB: Don't become floodfill w/o ECDSA support
     4 * Reseed: Better status feedback and cleanup in summary bar
     5
     62015-03-21 zzz
     7 * Console: Support plugin installation from local file
     8
    192015-03-20 zzz
    210 * Reseed:
  • router/java/src/net/i2p/router/RouterVersion.java

    r44c7518 r2c45378c  
    1919    public final static String ID = "Monotone";
    2020    public final static String VERSION = CoreVersion.VERSION;
    21     public final static long BUILD = 9;
     21    public final static long BUILD = 10;
    2222
    2323    /** for example "-test" */
  • router/java/src/net/i2p/router/networkdb/reseed/ReseedChecker.java

    r44c7518 r2c45378c  
    77import java.util.concurrent.atomic.AtomicBoolean;
    88
     9import net.i2p.data.DataHelper;
    910import net.i2p.router.RouterContext;
    1011import net.i2p.util.Addresses;
    1112import net.i2p.util.Log;
     13import net.i2p.util.SimpleTimer;
    1214
    1315/**
     
    3234
    3335    public static final int MINIMUM = 50;
     36    private static final long STATUS_CLEAN_TIME = 20*60*1000;
    3437
    3538    /**
     
    124127                return true;
    125128            } catch (IllegalArgumentException iae) {
     129                if (iae.getMessage() != null)
     130                    setError(DataHelper.escapeHTML(iae.getMessage()));
    126131                done();
    127132                throw iae;
     
    151156                Reseeder reseeder = new Reseeder(_context, this);
    152157                return reseeder.requestReseed(in);
     158            } catch (IOException ioe) {
     159                if (ioe.getMessage() != null)
     160                    setError(DataHelper.escapeHTML(ioe.getMessage()));
     161                done();
     162                throw ioe;
    153163            } finally {
    154164                done();
     
    175185    void done() {
    176186        _inProgress.set(false);
     187        _context.simpleScheduler().addEvent(new StatusCleaner(_lastStatus, _lastError), STATUS_CLEAN_TIME);
    177188    }
    178189
     
    180191     *  Status from current reseed attempt,
    181192     *  probably empty if no reseed in progress.
     193     *  May include HTML.
    182194     *
    183195     *  @return non-null, may be empty
     
    199211
    200212    /**
    201      *  Error from last or current reseed attempt
     213     *  Error from last or current reseed attempt.
     214     *  May include HTML.
    202215     *
    203216     *  @return non-null, may be empty
     
    218231    }
    219232
     233    /**
     234     *  @since 0.9.19
     235     */
     236    private class StatusCleaner implements SimpleTimer.TimedEvent {
     237        private final String _status, _error;
     238
     239        public StatusCleaner(String status, String error) {
     240            _status = status;
     241            _error = error;
     242        }
     243
     244        public void timeReached() {
     245            if (_status.equals(getStatus()))
     246                setStatus("");
     247            if (_error.equals(getError()))
     248                setError("");
     249        }
     250    }
    220251}
  • router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java

    r44c7518 r2c45378c  
    168168     */
    169169    int requestReseed(InputStream in) throws IOException {
     170        _checker.setError("");
     171        _checker.setStatus("Reseeding from file");
    170172        byte[] su3Magic = DataHelper.getASCII(SU3File.MAGIC);
    171173        byte[] zipMagic = new byte[] { 0x50, 0x4b, 0x03, 0x04 };
     
    283285                total = reseed(false);
    284286            }
    285             if (total >= 50) {
     287            if (total >= 20) {
    286288                System.out.println("Reseed complete, " + total + " received");
    287289                _checker.setError("");
     
    295297                     "Ensure that nothing blocks outbound HTTP, check the logs, " +
    296298                     "and if nothing helps, read the FAQ about reseeding manually.");
     299                String old = _checker.getError();
    297300                _checker.setError(_("Reseed failed.") + ' '  +
    298                                                _("See {0} for help.",
    299                                                  "<a target=\"_top\" href=\"/configreseed\">" + _("reseed configuration page") + "</a>"));
     301                                  _("See {0} for help.",
     302                                    "<a target=\"_top\" href=\"/configreseed\">" + _("reseed configuration page") + "</a>") +
     303                                  "<br>" + old);
    300304            }
    301305            _isRunning = false;
    302             _checker.setStatus("");
     306            // ReseedChecker will set timer to clean up
     307            //_checker.setStatus("");
    303308            _context.router().eventLog().addEvent(EventLog.RESEED, Integer.toString(total));
    304309        }
     
    329334            else
    330335                _log.logAlways(Log.WARN, "EepGet failed on " + url + " : " + cause);
     336            if (cause != null && cause.getMessage() != null)
     337                _checker.setError(DataHelper.escapeHTML(cause.getMessage()));
    331338        }
    332339
Note: See TracChangeset for help on using the changeset viewer.