import com.allanbank.mongodb.bson.Document; //导入方法依赖的package包/类

/**

* Extract the number of seconds this Server is behind the primary by

* comparing its latest optime with that of the absolute latest optime.

*

* To account for idle servers we use the optime for each server and assign

* a value of zero to the "latest" optime and then subtract the remaining

* servers from that optime.

*

*

* Lastly, the state of the server is also checked and the seconds behind is

* set to {@link Double#MAX_VALUE} if not in the primary (

* {@value #PRIMARY_STATE}) or secondary ({@value #SECONDARY_STATE}).

*

*

* @param replicaStateDoc

* The document to extract the seconds behind from.

*/

private void updateSecondsBehind(final Document replicaStateDoc) {

final State oldValue = myState;

final NumericElement state = replicaStateDoc.get(NUMERIC_TYPE,

"myState");

if (state != null) {

final int value = state.getIntValue();

if (value == PRIMARY_STATE) {

myState = State.WRITABLE;

mySecondsBehind = 0;

}

else if (value == SECONDARY_STATE) {

myState = State.READ_ONLY;

TimestampElement serverTimestamp = null;

final StringElement expectedName = new StringElement("name",

myCanonicalName);

for (final DocumentElement member : replicaStateDoc.find(

DOCUMENT_TYPE, "members", ".*")) {

if (expectedName.equals(member.get("name"))

&& (member.get(TIMESTAMP_TYPE, "optimeDate") != null)) {

serverTimestamp = member.get(TIMESTAMP_TYPE,

"optimeDate");

}

}

if (serverTimestamp != null) {

TimestampElement latestTimestamp = serverTimestamp;

for (final TimestampElement time : replicaStateDoc.find(

TIMESTAMP_TYPE, "members", ".*", "optimeDate")) {

if (latestTimestamp.getTime() < time.getTime()) {

latestTimestamp = time;

}

}

final double msBehind = latestTimestamp.getTime()

- serverTimestamp.getTime();

mySecondsBehind = (msBehind / TimeUnit.SECONDS.toMillis(1));

}

}

else {

// "myState" != 1 and "myState" != 2

mySecondsBehind = Double.MAX_VALUE;

myState = State.UNAVAILABLE;

}

}

myEventSupport.firePropertyChange(STATE_PROP, oldValue, myState);

}

java中find方法_Java Document.find方法代码示例相关推荐

  1. java中to date_Java Date toInstant()用法及代码示例

    Java中Date类的toInstant()方法用于将Date对象转换为Instant对象.在转换过程中会创建一个Instant,用于表示时间轴上与此日期相同的点. 用法: public Instan ...

  2. Java 中array.size()_Java ArrayDeque size()方法与示例

    ArrayDeque类size()方法size()方法在java.lang包中可用. size()方法用于返回存储在此双端队列中的大小(元素数). size()方法是一个非静态方法,只能通过类对象访问 ...

  3. java中扫描仪程序_Java扫描仪delimiter()方法及示例

    扫描仪类delimiter()方法delimiter()方法在java.util包中可用. delimiter()方法用于检索当前与分隔符匹配的Scanner的模式. delimiter()方法是一种 ...

  4. java中isolate时间_Java HikariDataSource.setIdleTimeout方法代码示例

    import com.zaxxer.hikari.HikariDataSource; //导入方法依赖的package包/类 private HikariDataSource createHikari ...

  5. java中move用法_Java IFile.move方法代碼示例

    import org.eclipse.core.resources.IFile; //導入方法依賴的package包/類 /** * * 01. Class0 uses Class1 in requi ...

  6. java中setattr功能_Java Controller.setAttr方法代码示例

    import com.jfinal.core.Controller; //导入方法依赖的package包/类 /** * 为了规范代码,这里做了一点类是Spring的ResponseEntity的东西 ...

  7. java中的getfirst_Java LinkedList getFirst()用法及代码示例

    Java.util.LinkedList.getFirst()方法用于从LinkedList或列表开头的元素中获取或检索第一个元素. 用法: LinkedList.getFirst() 参数:此方法不 ...

  8. java中保留小数位_Java中保留两位小数的方法

    Java中保留4位小数的方法: import java.math.BigDecimal; import java.text.DecimalFormat; import java.text.Number ...

  9. java中使用配置文件_Java中使用Properties配置文件的简单方法

    Java中使用Properties配置文件的简单方法 properties Properties文件是java中的一种配置文件,文件后缀为".properties",文件的内容格式 ...

最新文章

  1. Go在Ubuntu 14.04 64位上的安装过程
  2. C语言-人狼羊菜问题-最容易看懂的解决方法及代码
  3. mysql主从数据库设计_mysql数据库主从库镜像原理及配置
  4. php time相差12小时_PHP获取时间比实际时间少8小时的问题
  5. iOS Hacker LLDB 和 debugserver 实例调试
  6. 【TensorFlow】TensorFlow函数精讲之tf.nn.softmax_cross_entropy_with_logits
  7. 拳王虚拟项目公社:虚拟产品自动化4步走,小白自动盈利的第一桶金
  8. Python datetime time
  9. Go http访问使用代理
  10. centos7 删除zabbix_Zabbix服务器端运行中显示为“不”的解决方式
  11. [转载] Python 完整实现的简单遗传算法(SGA)
  12. HAOI2018 反色游戏
  13. 火山软件开发访问网页查找电话号和读写文件应用
  14. 无线打印机与手机连接到服务器,图文详解手机通过无线Wifi连接打印机的方法...
  15. TPSHOP商城软件测试环境搭建过程
  16. Kubernetes(K8S)入门到运维 ( 六) Helm与功能组件及证书年限
  17. js中isFinite
  18. 如何将pdf转换成ppt文件
  19. FME会员期刊(夏季版)
  20. 上海户口计算机考试有用吗,上海居转户这9个问题你必须要清楚!对你的上海户口有帮助!...

热门文章

  1. GraphQL:简单开开始一个查询
  2. 《ASP.NET Core 真机拆解》 送书活动结果公布
  3. .NET Core开发实战(第30课:领域事件:提升业务内聚,实现模块解耦)--学习笔记...
  4. ASP.NET Core 应用程序状态
  5. .NET和Docker ,比翼双飞
  6. ASP.NET Core 3.0:将会拥有更少的依赖
  7. 用.NET Core实现装饰模式和.NET Core的Stream简介
  8. .Net 4.X 提前用上 .Net Core 的配置模式以及热重载配置
  9. 使用Nito.AsyncEx实现异步锁
  10. 使用BigQuery分析GitHub上的C#代码