Added missing line, the DB cache now works. Added mstore stats and listcolls command.
This commit is contained in:
		
							parent
							
								
									9a8a792315
								
							
						
					
					
						commit
						b846250944
					
				@ -14,6 +14,8 @@ permissions:
 | 
				
			|||||||
  mcore.cmd.mcore.id: {description: see the server id, default: false}
 | 
					  mcore.cmd.mcore.id: {description: see the server id, default: false}
 | 
				
			||||||
  mcore.cmd.mcore.version: {description: diplay plugin version, default: false}
 | 
					  mcore.cmd.mcore.version: {description: diplay plugin version, default: false}
 | 
				
			||||||
  mcore.cmd.mcore.mstore: {description: use the mstore command, default: false}
 | 
					  mcore.cmd.mcore.mstore: {description: use the mstore command, default: false}
 | 
				
			||||||
 | 
					  mcore.cmd.mcore.mstore.stats: {description: show mstore statistics, default: false}
 | 
				
			||||||
 | 
					  mcore.cmd.mcore.mstore.listcolls: {description: list collections in a database, default: false}
 | 
				
			||||||
  mcore.cmd.mcore.mstore.copydb: {description: copy database content, default: false}
 | 
					  mcore.cmd.mcore.mstore.copydb: {description: copy database content, default: false}
 | 
				
			||||||
  mcore.cmd.mcore.usys: {description: use the usys command, default: false}
 | 
					  mcore.cmd.mcore.usys: {description: use the usys command, default: false}
 | 
				
			||||||
  mcore.cmd.mcore.usys.multiverse: {description: manage multiverses, default: false}
 | 
					  mcore.cmd.mcore.usys.multiverse: {description: manage multiverses, default: false}
 | 
				
			||||||
@ -42,6 +44,8 @@ permissions:
 | 
				
			|||||||
      mcore.cmd.mcore.id: true
 | 
					      mcore.cmd.mcore.id: true
 | 
				
			||||||
      mcore.cmd.mcore.version: true
 | 
					      mcore.cmd.mcore.version: true
 | 
				
			||||||
      mcore.cmd.mcore.mstore: true
 | 
					      mcore.cmd.mcore.mstore: true
 | 
				
			||||||
 | 
					      mcore.cmd.mcore.mstore.stats: true
 | 
				
			||||||
 | 
					      mcore.cmd.mcore.mstore.listcolls: true
 | 
				
			||||||
      mcore.cmd.mcore.mstore.copydb: true
 | 
					      mcore.cmd.mcore.mstore.copydb: true
 | 
				
			||||||
      mcore.cmd.mcore.usys: true
 | 
					      mcore.cmd.mcore.usys: true
 | 
				
			||||||
      mcore.cmd.mcore.usys.multiverse: true
 | 
					      mcore.cmd.mcore.usys.multiverse: true
 | 
				
			||||||
@ -81,6 +85,9 @@ permissions:
 | 
				
			|||||||
      mcore.cmd.mcore: true
 | 
					      mcore.cmd.mcore: true
 | 
				
			||||||
      mcore.cmd.mcore.id: true
 | 
					      mcore.cmd.mcore.id: true
 | 
				
			||||||
      mcore.cmd.mcore.version: true
 | 
					      mcore.cmd.mcore.version: true
 | 
				
			||||||
 | 
					      mcore.cmd.mcore.mstore: true
 | 
				
			||||||
 | 
					      mcore.cmd.mcore.mstore.stats: true
 | 
				
			||||||
 | 
					      mcore.cmd.mcore.mstore.listcolls: true
 | 
				
			||||||
      mcore.cmd.mcore.usys: true
 | 
					      mcore.cmd.mcore.usys: true
 | 
				
			||||||
      mcore.cmd.mcore.usys.multiverse: true
 | 
					      mcore.cmd.mcore.usys.multiverse: true
 | 
				
			||||||
      mcore.cmd.mcore.usys.multiverse.list: true
 | 
					      mcore.cmd.mcore.usys.multiverse.list: true
 | 
				
			||||||
 | 
				
			|||||||
@ -14,6 +14,8 @@ public enum MCorePerm
 | 
				
			|||||||
	CMD_MCORE_ID("cmd.mcore.id"),
 | 
						CMD_MCORE_ID("cmd.mcore.id"),
 | 
				
			||||||
	CMD_MCORE_VERSION("cmd.mcore.version"),
 | 
						CMD_MCORE_VERSION("cmd.mcore.version"),
 | 
				
			||||||
	CMD_MCORE_MSTORE("cmd.mcore.mstore"),
 | 
						CMD_MCORE_MSTORE("cmd.mcore.mstore"),
 | 
				
			||||||
 | 
						CMD_MCORE_MSTORE_STATS("cmd.mcore.mstore.stats"),
 | 
				
			||||||
 | 
						CMD_MCORE_MSTORE_LISTCOLLS("cmd.mcore.mstore.listcolls"),
 | 
				
			||||||
	CMD_MCORE_MSTORE_COPYDB("cmd.mcore.mstore.copydb"),
 | 
						CMD_MCORE_MSTORE_COPYDB("cmd.mcore.mstore.copydb"),
 | 
				
			||||||
	CMD_MCORE_USYS("cmd.mcore.usys"),
 | 
						CMD_MCORE_USYS("cmd.mcore.usys"),
 | 
				
			||||||
	CMD_MCORE_USYS_MULTIVERSE("cmd.mcore.usys.multiverse"),
 | 
						CMD_MCORE_USYS_MULTIVERSE("cmd.mcore.usys.multiverse"),
 | 
				
			||||||
 | 
				
			|||||||
@ -9,12 +9,16 @@ import com.massivecraft.mcore.util.MUtil;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
public class CmdMCoreMStore extends MCoreCommand
 | 
					public class CmdMCoreMStore extends MCoreCommand
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
						public CmdMCoreMStoreStats cmdMCoreMStoreStats = new CmdMCoreMStoreStats(MUtil.list("stats"));
 | 
				
			||||||
 | 
						public CmdMCoreMStoreListcolls cmdMCoreMStoreListcolls = new CmdMCoreMStoreListcolls(MUtil.list("listcolls"));
 | 
				
			||||||
	public CmdMCoreMStoreCopydb cmdMCoreMStoreCopydb = new CmdMCoreMStoreCopydb(MUtil.list("copydb"));
 | 
						public CmdMCoreMStoreCopydb cmdMCoreMStoreCopydb = new CmdMCoreMStoreCopydb(MUtil.list("copydb"));
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	public CmdMCoreMStore(List<String> aliases)
 | 
						public CmdMCoreMStore(List<String> aliases)
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		super(aliases);
 | 
							super(aliases);
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
 | 
							this.addSubCommand(this.cmdMCoreMStoreStats);
 | 
				
			||||||
 | 
							this.addSubCommand(this.cmdMCoreMStoreListcolls);
 | 
				
			||||||
		this.addSubCommand(this.cmdMCoreMStoreCopydb);
 | 
							this.addSubCommand(this.cmdMCoreMStoreCopydb);
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
		this.addRequirements(ReqHasPerm.get(MCorePerm.CMD_MCORE_MSTORE.node));
 | 
							this.addRequirements(ReqHasPerm.get(MCorePerm.CMD_MCORE_MSTORE.node));
 | 
				
			||||||
 | 
				
			|||||||
@ -0,0 +1,73 @@
 | 
				
			|||||||
 | 
					package com.massivecraft.mcore.mcorecmd;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.util.List;
 | 
				
			||||||
 | 
					import java.util.Set;
 | 
				
			||||||
 | 
					import java.util.TreeSet;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.massivecraft.mcore.ConfServer;
 | 
				
			||||||
 | 
					import com.massivecraft.mcore.MCorePerm;
 | 
				
			||||||
 | 
					import com.massivecraft.mcore.NaturalOrderComparator;
 | 
				
			||||||
 | 
					import com.massivecraft.mcore.cmd.arg.ARString;
 | 
				
			||||||
 | 
					import com.massivecraft.mcore.cmd.req.ReqHasPerm;
 | 
				
			||||||
 | 
					import com.massivecraft.mcore.store.Coll;
 | 
				
			||||||
 | 
					import com.massivecraft.mcore.store.Db;
 | 
				
			||||||
 | 
					import com.massivecraft.mcore.store.MStore;
 | 
				
			||||||
 | 
					import com.massivecraft.mcore.util.Txt;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public class CmdMCoreMStoreListcolls extends MCoreCommand
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						public CmdMCoreMStoreListcolls(List<String> aliases)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							super(aliases);
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							this.addOptionalArg("db", ConfServer.dburi);
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							this.addRequirements(ReqHasPerm.get(MCorePerm.CMD_MCORE_MSTORE_LISTCOLLS.node));
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						@Override
 | 
				
			||||||
 | 
						public void perform()
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							// Args
 | 
				
			||||||
 | 
							final String dbAlias = this.arg(0, ARString.get(), ConfServer.dburi);
 | 
				
			||||||
 | 
							final Db db = MStore.getDb(dbAlias);
 | 
				
			||||||
 | 
							if (db == null)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								msg("<b>could not get the database.");
 | 
				
			||||||
 | 
								return;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							// Prepare
 | 
				
			||||||
 | 
							Set<String> collnames = new TreeSet<String>(NaturalOrderComparator.get());
 | 
				
			||||||
 | 
							collnames.addAll(db.getCollnames());
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							// Do it!
 | 
				
			||||||
 | 
							msg(Txt.titleize("Collections in "+db.getName()));
 | 
				
			||||||
 | 
							for (String collname : collnames)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								String message = Txt.parse("<h>") + collname;
 | 
				
			||||||
 | 
								
 | 
				
			||||||
 | 
								Coll<?> coll = null;
 | 
				
			||||||
 | 
								
 | 
				
			||||||
 | 
								for (Coll<?> collCandidate : Coll.instances)
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
									if (!collCandidate.getName().equals(collname)) continue;
 | 
				
			||||||
 | 
									if (collCandidate.getDb() != db) continue;
 | 
				
			||||||
 | 
									coll = collCandidate;
 | 
				
			||||||
 | 
									break;
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								
 | 
				
			||||||
 | 
								if (coll == null)
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
									message += Txt.parse(" <b>UNUSED");
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								else
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
									message += Txt.parse(" <i>(%d documents)", coll.getIds().size());
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								
 | 
				
			||||||
 | 
								sendMessage(message);
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										26
									
								
								src/com/massivecraft/mcore/mcorecmd/CmdMCoreMStoreStats.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								src/com/massivecraft/mcore/mcorecmd/CmdMCoreMStoreStats.java
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,26 @@
 | 
				
			|||||||
 | 
					package com.massivecraft.mcore.mcorecmd;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.util.List;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.massivecraft.mcore.MCorePerm;
 | 
				
			||||||
 | 
					import com.massivecraft.mcore.cmd.req.ReqHasPerm;
 | 
				
			||||||
 | 
					import com.massivecraft.mcore.store.ExamineThread;
 | 
				
			||||||
 | 
					import com.massivecraft.mcore.util.Txt;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public class CmdMCoreMStoreStats extends MCoreCommand
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						public CmdMCoreMStoreStats(List<String> aliases)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							super(aliases);
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							this.addRequirements(ReqHasPerm.get(MCorePerm.CMD_MCORE_MSTORE_STATS.node));
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						@Override
 | 
				
			||||||
 | 
						public void perform()
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							msg(Txt.titleize("MStore Statistics"));
 | 
				
			||||||
 | 
							msg("<k>Last Examine Duration: <v>%d<i>ms", ExamineThread.get().getLastDurationMillis());
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -53,7 +53,9 @@ public class DriverMongo extends DriverAbstract
 | 
				
			|||||||
	@Override
 | 
						@Override
 | 
				
			||||||
	public Set<String> getCollnames(Db db)
 | 
						public Set<String> getCollnames(Db db)
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		return ((DbMongo)db).db.getCollectionNames();
 | 
							Set<String> ret = ((DbMongo)db).db.getCollectionNames();
 | 
				
			||||||
 | 
							ret.remove("system.indexes");
 | 
				
			||||||
 | 
							return ret;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	@Override
 | 
						@Override
 | 
				
			||||||
 | 
				
			|||||||
@ -72,12 +72,12 @@ public class MStore
 | 
				
			|||||||
	public static Db getDb(String alias)
 | 
						public static Db getDb(String alias)
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		String uri = resolveAlias(alias);
 | 
							String uri = resolveAlias(alias);
 | 
				
			||||||
		Db ret = uri2db.get(uri);
 | 
							Db db = uri2db.get(uri);
 | 
				
			||||||
		if (ret != null) return ret;
 | 
							if (db != null) return db;
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
		try
 | 
							try
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			ret = getDb(new URI(uri));
 | 
								db = getDb(new URI(uri));
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		catch (URISyntaxException e)
 | 
							catch (URISyntaxException e)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
@ -85,7 +85,9 @@ public class MStore
 | 
				
			|||||||
			return null;
 | 
								return null;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
		return ret;
 | 
							uri2db.put(uri, db);
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							return db;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	public static Db getDb(URI uri)
 | 
						public static Db getDb(URI uri)
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user