import net.pterodactylus.util.thread.NamedThreadFactory;
import com.google.common.annotations.VisibleForTesting;
+import com.google.common.base.Stopwatch;
import com.google.common.collect.FluentIterable;
import com.google.common.collect.HashMultimap;
import com.google.common.collect.Multimap;
private volatile long lastConfigurationUpdate;
private final MetricRegistry metricRegistry;
+ private final Histogram configurationSaveTimeHistogram;
/**
* Creates a new core.
this.database = database;
this.metricRegistry = metricRegistry;
preferences = new Preferences(eventBus);
+ this.configurationSaveTimeHistogram = metricRegistry.histogram("configuration.save.duration", () -> new Histogram(new ExponentiallyDecayingReservoir(3000, 0)));
}
//
loadSone(sone);
database.storeSone(sone);
sone.setStatus(SoneStatus.idle);
+ if (sone.getPosts().isEmpty() && sone.getReplies().isEmpty()) {
+ // dirty hack
+ lockSone(sone);
+ }
soneInserter.start();
return sone;
}
database.save();
/* now save it. */
+ Stopwatch stopwatch = Stopwatch.createStarted();
configuration.save();
+ configurationSaveTimeHistogram.update(stopwatch.elapsed(TimeUnit.MICROSECONDS));
} catch (ConfigurationException ce1) {
logger.log(Level.SEVERE, "Could not store configuration!", ce1);
*/
@Subscribe
public void ownIdentityAdded(OwnIdentityAddedEvent ownIdentityAddedEvent) {
- OwnIdentity ownIdentity = ownIdentityAddedEvent.ownIdentity();
+ OwnIdentity ownIdentity = ownIdentityAddedEvent.getOwnIdentity();
logger.log(Level.FINEST, String.format("Adding OwnIdentity: %s", ownIdentity));
if (ownIdentity.hasContext("Sone")) {
addLocalSone(ownIdentity);
*/
@Subscribe
public void ownIdentityRemoved(OwnIdentityRemovedEvent ownIdentityRemovedEvent) {
- OwnIdentity ownIdentity = ownIdentityRemovedEvent.ownIdentity();
+ OwnIdentity ownIdentity = ownIdentityRemovedEvent.getOwnIdentity();
logger.log(Level.FINEST, String.format("Removing OwnIdentity: %s", ownIdentity));
trustedIdentities.removeAll(ownIdentity);
}
*/
@Subscribe
public void identityAdded(IdentityAddedEvent identityAddedEvent) {
- Identity identity = identityAddedEvent.identity();
+ Identity identity = identityAddedEvent.getIdentity();
logger.log(Level.FINEST, String.format("Adding Identity: %s", identity));
- trustedIdentities.put(identityAddedEvent.ownIdentity(), identity);
+ trustedIdentities.put(identityAddedEvent.getOwnIdentity(), identity);
addRemoteSone(identity);
}
*/
@Subscribe
public void identityUpdated(IdentityUpdatedEvent identityUpdatedEvent) {
- Identity identity = identityUpdatedEvent.identity();
+ Identity identity = identityUpdatedEvent.getIdentity();
final Sone sone = getRemoteSone(identity.getId());
if (sone.isLocal()) {
return;
*/
@Subscribe
public void identityRemoved(IdentityRemovedEvent identityRemovedEvent) {
- OwnIdentity ownIdentity = identityRemovedEvent.ownIdentity();
- Identity identity = identityRemovedEvent.identity();
+ OwnIdentity ownIdentity = identityRemovedEvent.getOwnIdentity();
+ Identity identity = identityRemovedEvent.getIdentity();
trustedIdentities.remove(ownIdentity, identity);
for (Entry<OwnIdentity, Collection<Identity>> trustedIdentity : trustedIdentities.asMap().entrySet()) {
if (trustedIdentity.getKey().equals(ownIdentity)) {