Page MenuHomePhabricator
Feed Advanced Search

Jun 27 2015

joshuaspence added a comment to T8685: Move secure.phabriactor.com halfway into the cluster.

Yeah I'm seeing SSL errors as well. Not sure if it helps but there are some items in yellow on https://www.ssllabs.com/ssltest/analyze.html?d=secure.phabricator.com

Jun 27 2015, 11:51 PM · Ops
joshuaspence added a project to T8699: Padding between space and policy: Design.
Jun 27 2015, 11:44 PM · Design, Maniphest
joshuaspence created T8699: Padding between space and policy.
Jun 27 2015, 11:44 PM · Design, Maniphest
joshuaspence created T8698: Exception when viewing repository push log.
Jun 27 2015, 11:42 PM · Diffusion
epriestley added a comment to T8697: Unable to apply 'phabricator:20150504.symbolsproject.1.php': Table 'phabricator_spaces.spaces_namespace' doesn't exist.

Sorry about that -- that patch should fix this one. Let me know if you hit anything else.

Jun 27 2015, 8:46 PM
epriestley closed T8697: Unable to apply 'phabricator:20150504.symbolsproject.1.php': Table 'phabricator_spaces.spaces_namespace' doesn't exist as Resolved by committing Restricted Diffusion Commit.
Jun 27 2015, 8:45 PM
epriestley added a comment to T8685: Move secure.phabriactor.com halfway into the cluster.

It's a single host and I didn't touch anything in the last couple hours.

Jun 27 2015, 5:20 PM · Ops
epriestley added a comment to T8685: Move secure.phabriactor.com halfway into the cluster.

Can you be more specific? I can't reproduce this.

Jun 27 2015, 4:49 PM · Ops
epriestley added a comment to T8685: Move secure.phabriactor.com halfway into the cluster.

I think I'm going to bring .org onto this host for simplicity/consistency, too. Putting it on corp is messy because of SSL, but putting it here for now should be straightforward.

Jun 27 2015, 3:06 PM · Ops
epriestley added a comment to T8685: Move secure.phabriactor.com halfway into the cluster.

Oh, I need to hook up diviner / symbols, too. I'm probably just going to cron those. So still-remaining stuff I'm aware of is:

Jun 27 2015, 3:05 PM · Ops
epriestley added a comment to T8685: Move secure.phabriactor.com halfway into the cluster.

I manually installed xhprof on the host since it needs some special setup steps that aren't trivial to integrate into the deployment tools, and isn't particularly important to have available.

Jun 27 2015, 2:18 PM · Ops
epriestley added a comment to T8685: Move secure.phabriactor.com halfway into the cluster.

Backups work but won't be run automatically by cluster administration services, although they are reported. I'm just going to cron them for now.

Jun 27 2015, 2:03 PM · Ops
epriestley added a comment to T8685: Move secure.phabriactor.com halfway into the cluster.

Stuff I'm still tracking:

Jun 27 2015, 1:47 PM · Ops
epriestley added a comment to T8685: Move secure.phabriactor.com halfway into the cluster.
  • I configured HTTP -> HTTPS in a standard way (on this host, it involves some legacy oddness).
  • I added host SSH keys and switched the tier to use them.
  • I verified external connectivity and reasonable-seeming repo connectivity.
  • I created secure001.phacility.net and sbak001.phacility.net devices on Admin, so generating routine backups will depend on the cluster being available. This seems acceptable as a dependency.
  • I added run.repo to the host attributes to get repo backups working and verified repo backups get written.
  • I dumped all the data and moved it over.
  • I renamespace'd the database to secure and loaded it, then made config adjustments to use this as the storage namespace.
  • I unpacked the repos into /core/repo/secure, then made a config adjustment for this.
  • I allocated a new elastic IP and swapped DNS over (we still have javelinjs on the old box, plus we can't reuse a non-VPC elastic IP in a VPC).
Jun 27 2015, 1:39 PM · Ops
epriestley added a comment to T8685: Move secure.phabriactor.com halfway into the cluster.

I've completed the cluster deployment and am resuming this now.

Jun 27 2015, 11:42 AM · Ops
epriestley updated the task description for T8623: Upgrading: Differential Hunk Migration.
Jun 27 2015, 11:37 AM · Installing & Upgrading, Differential, Guides
epriestley updated the task description for T8623: Upgrading: Differential Hunk Migration.
Jun 27 2015, 11:37 AM · Installing & Upgrading, Differential, Guides
epriestley edited the content of Changelog.
Jun 27 2015, 10:59 AM
epriestley created 2015 Week 26 (Very Late June).
Jun 27 2015, 10:59 AM
epriestley closed T8695: test as Invalid.
Jun 27 2015, 10:30 AM
epriestley added a comment to T8691: Unable to apply 'phabricator:20150503.repositorysymbols.2.php': Unknown column 'r.spacePHID' in 'where clause'.

Thanks for the report. That should fix the issue, let us know if you run into anything else.

Jun 27 2015, 3:03 AM
epriestley closed T8691: Unable to apply 'phabricator:20150503.repositorysymbols.2.php': Unknown column 'r.spacePHID' in 'where clause' as Resolved by committing Restricted Diffusion Commit.
Jun 27 2015, 3:02 AM
joshuaspence closed T8694: shawar" as Spite.

Please don't pentest on a production install.

Jun 27 2015, 2:09 AM · Arcanist
joshuaspence closed T8694: shawar", a subtask of T8693: Arc Anoid crashes on a 30x15 terminal, as Spite.
Jun 27 2015, 2:09 AM · Arcanist
joshuaspence created T8692: Include request URL in error logs.
Jun 27 2015, 12:39 AM · Restricted Project, Aphront, Infrastructure

Jun 26 2015

epriestley added a comment to T8690: Modernize PhabricatorCommitSearchEngine.

"Audit" is basically "Query commits", just a little un-modern / funky.

Jun 26 2015, 11:29 PM · Audit, Restricted Project, ApplicationSearch, Diffusion
joshuaspence created T8690: Modernize PhabricatorCommitSearchEngine.
Jun 26 2015, 11:21 PM · Audit, Restricted Project, ApplicationSearch, Diffusion
epriestley added a comment to T8685: Move secure.phabriactor.com halfway into the cluster.

I think this is kind-of working now. I'm going to take a break for today and pick it back up tomorrow since I'm pretty close to bringing the data over, which might take a while, and I'm sort of committed to finishing once I start it.

Jun 26 2015, 10:45 PM · Ops
epriestley added a comment to T8685: Move secure.phabriactor.com halfway into the cluster.
  • I created a new instance.secure security group. I removed port 25 (SMTP), since we now use Mailgun for inbound mail. I removed port 843 (Flash sockets) since we no longer use them. I changed administrative SSH from 222 to 2222 for consistency with the vault tier. This leaves us with 22, 80, 443, 2222, and 22280.
  • I launched a secure001 host and added a secure001 DNS entry for it in Route 53.
  • I created and attached sbak001, srepo001 and sdata001 volumes. This is a little overkill but should work well with the tooling.
  • I created a new "secure" host role in rCORE44a038f, and deployed the bastion to get it to recognize the role.
  • I used bin/remote deploy secure001 --port 22 to do an initial deploy.
  • I added secure.conf and the missing sshd library in rCORE95a18f3.
  • I added a bunch of config files and stuff in rCORE78c6c9a. This got SSH moved to 2222 correctly, so --port 22 is no longer required (like vault, this tier does need it for initial deploys).
  • Kept fiddling with config (see diffs), thing is sort of deploying properly now, at least.
Jun 26 2015, 10:02 PM · Ops
epriestley added a comment to T8685: Move secure.phabriactor.com halfway into the cluster.

I'm starting this now.

Jun 26 2015, 9:03 PM · Ops
epriestley renamed T8688: Attach and initialize backup volumes during `remote deploy` workflow from Attach and initialize back volumes during `remote deploy` workflow to Attach and initialize backup volumes during `remote deploy` workflow.
Jun 26 2015, 9:00 PM · Phacility
epriestley edited the content of Adding Hardware.
Jun 26 2015, 8:19 PM
epriestley added a comment to T8689: Inline commenting that’s actually fast and real-time.

My experience is inline comments usually aren't chat-like and would not make sense if synchronized in real time. It's intentional that they don't publish for other users until the author is ready to share them. For example, I often make an inline asking about something I don't understand, but later understand it after looking at more of the diff. I also often make an inline pointing out an instance of a larger theme, but the comment on its own doesn't make sense without the larger explanatory text. In both of these cases, publishing them before I'm ready to share the comments would be confusing or unclear.

Jun 26 2015, 8:16 PM · Differential, Restricted Project
epriestley closed T8686: Expand Phacility cluster repo and db cluster tiers as Resolved.

Stuff that went poorly:

Jun 26 2015, 8:04 PM · Ops, Phacility
epriestley added a comment to T8686: Expand Phacility cluster repo and db cluster tiers.
  • I set instances.open to 0 on the 001 services and to 1 on the 002 services.
  • I created a new instance and verified it came up on the 002 services.
  • I verified that the test-on-002 instance still worked. Verified that a known 001-instance (meta) still works.
Jun 26 2015, 7:59 PM · Ops, Phacility
epriestley added a comment to T8686: Expand Phacility cluster repo and db cluster tiers.
  • I connected to the test instance, enabled Darkconsole, verified it was hitting the right DB, etc.
  • I created, cloned, and pushed a repository.
  • I ran host backup explicitly on both machines. This wanted device entries for the volumes for logging. I created them; this completed smoothly afterward.
  • I verified that the backups appeared in the web UI log, that the repository was on the correct host, etc.
Jun 26 2015, 7:55 PM · Ops, Phacility
epriestley added a comment to T8686: Expand Phacility cluster repo and db cluster tiers.

AppArmor uses file modification time heuristics to decide whether it can read a cache or not. This heuristic guesses the wrong result in the deployment case. I added -T to stop it from using the cache in rCORE8371c05b. Instance upgrade/sync operations now work correctly.

Jun 26 2015, 7:47 PM · Ops, Phacility
epriestley added a comment to T8686: Expand Phacility cluster repo and db cluster tiers.
Jun 26 18:38:15 db002 kernel: [ 1844.819416] type=1400 audit(1435343895.006:33): apparmor="DENIED" operation="open" profile="/usr/sbin/mysqld" name="/core/conf/mysql/my.cnf" pid=5526 comm="mysqld" requested_mask="r" denied_mask="r" fsuid=0 ouid=1000
Jun 26 18:38:15 db002 kernel: [ 1844.825878] type=1400 audit(1435343895.014:34): apparmor="DENIED" operation="open" profile="/usr/sbin/mysqld" name="/core/conf/mysql/my.cnf" pid=5536 comm="mysqld" requested_mask="r" denied_mask="r" fsuid=0 ouid=1000
Jun 26 2015, 7:35 PM · Ops, Phacility
epriestley added a comment to T8686: Expand Phacility cluster repo and db cluster tiers.
  • I created Almanac service entries for repox002 and dbx002, following the 001 templates. Notably, repo bindings need a protocol specified. I didn't specify "instances.open" on these yet.
  • I created a new instance and verified it came up on repox001 and dbx001 still, since the new services aren't open.
  • I manually edited the instance to move it to the 002 services, then tried to upgrade the database. This failed.
Jun 26 2015, 7:30 PM · Ops, Phacility
epriestley added a comment to T8686: Expand Phacility cluster repo and db cluster tiers.
  • I created Almanac device entries for these hosts, following db001 and repo001. Both deploys went cleanly once the device entries were created.
  • I used remote ssh <host> to connect to the devices and verified connectivity, volume attachment, deployed libraries, branches, that mysql works on db002, iptables rules, and that nothing appeared otherwise funky or broken. I didn't catch anything suspicious, except that remote deploy doesn't initialize or mount the backup volume: we do that when we actually perform backups. It probably should, just to catch misconfiguration/errors earlier. For now, I'll do this manually later on. I filed T8688 to follow up.
Jun 26 2015, 7:05 PM · Ops, Phacility
epriestley created T8688: Attach and initialize backup volumes during `remote deploy` workflow.
Jun 26 2015, 7:04 PM · Phacility
epriestley added a comment to T8686: Expand Phacility cluster repo and db cluster tiers.

When creating device entries, I discovered AlmanacServiceQuery has a bug where name is not returned in the paging map. This prevents paging when an install has more than 100 service entries.

Jun 26 2015, 6:51 PM · Ops, Phacility
epriestley added a revision to T8686: Expand Phacility cluster repo and db cluster tiers: Restricted Differential Revision.
Jun 26 2015, 6:50 PM · Ops, Phacility
epriestley added a comment to T8686: Expand Phacility cluster repo and db cluster tiers.

When a new host comes up with no instances, we don't handle it cleanly at the tail end of deployment.
This cleared MySQL deployment and just left us with the "no instances" issue on both hosts.

Jun 26 2015, 6:44 PM · Ops, Phacility
epriestley added a comment to T8686: Expand Phacility cluster repo and db cluster tiers.

We don't actually install MySQL onto hosts in the db role.

Jun 26 2015, 6:38 PM · Ops, Phacility
epriestley added a comment to T8686: Expand Phacility cluster repo and db cluster tiers.
  • I launched repo002 and db002 into the cluster.
  • I created .phacility.net DNS entries for the hosts.
  • I created ddata002, dbak002, rdata002 and rbak002 volumes and attached them according to Adding Cluster Hardware.
  • I used bin/remote deploy <host> to deploy each host. Both hosts deployed mostly cleanly.
Jun 26 2015, 6:29 PM · Ops, Phacility
epriestley added a comment to T8686: Expand Phacility cluster repo and db cluster tiers.

I'm starting this now. This should ideally be routine, but I expect there will be a few hiccups.

Jun 26 2015, 6:05 PM · Ops, Phacility
epriestley added a comment to T8685: Move secure.phabriactor.com halfway into the cluster.

For communication, my plan today would just be to use IRC/email/phonecalls since we have a small team, run operations mostly in the open, and are all regularly available on these other channels, and the likely course of action is "wait for AWS to come back up". I think that's generally reasonable until we have a larger operations team and more operational responses available, so I'm not particularly concerned about Conpherence/Maniphest on this instance being down.

Jun 26 2015, 5:55 PM · Ops
chad awarded T8685: Move secure.phabriactor.com halfway into the cluster a Manufacturing Defect? token.
Jun 26 2015, 5:51 PM · Ops
btrahan awarded T8686: Expand Phacility cluster repo and db cluster tiers a Mountain of Wealth token.
Jun 26 2015, 5:32 PM · Ops, Phacility
epriestley created T8686: Expand Phacility cluster repo and db cluster tiers.
Jun 26 2015, 4:52 PM · Ops, Phacility
epriestley created T8685: Move secure.phabriactor.com halfway into the cluster.
Jun 26 2015, 4:30 PM · Ops
tiguchi awarded T3569: Make Phrequent somewhat usable a Like token.
Jun 26 2015, 4:27 PM · Phrequent
epriestley closed T8665: AphrontDuplicateKeyQueryException when typing into Maniphest description field as Invalid.

I can't reproduce this, and haven't seen other reports of it. If this is a draft issue, it will likely be resolved by T5031.

Jun 26 2015, 2:02 PM · Maniphest
epriestley triaged T8676: Easy raw link for pastes as Wishlist priority.
Jun 26 2015, 2:00 PM · Paste
epriestley closed T8670: Harbormaster autoplan targets do not always complete as Resolved.

I think this is fixed now, and additional failures should now be more obvious.

Jun 26 2015, 2:00 PM · Harbormaster
epriestley closed T8670: Harbormaster autoplan targets do not always complete, a subtask of T8657: Harbormaster v1 Errata, as Resolved.
Jun 26 2015, 2:00 PM · Harbormaster
epriestley added a subtask for T8657: Harbormaster v1 Errata: T8650: DifferentialTransactionEditor may race HarbormasterBuildWorker.
Jun 26 2015, 1:34 PM · Harbormaster
epriestley triaged T8682: Commit hooks should have better notification options for committers as Wishlist priority.
Jun 26 2015, 1:33 PM · Notifications, Herald
epriestley added a comment to T8644: Herald template / recipe book / examples / quick-create tool.

T8682 describes another recipe, if [body][does not contain]['magic word'], [block commit] to let you create warnings/prompts when committing.

Jun 26 2015, 1:33 PM · Restricted Project, Herald
epriestley added a comment to T8682: Commit hooks should have better notification options for committers.

This is a very niche use case. It also tends to conflate the pusher (who we may not know, for imported repositories), the committer, and the author. This makes me hesitant about implementing it.

Jun 26 2015, 1:31 PM · Notifications, Herald
joshuaspence closed T8681: Insufficient permission for adding an object to repository database objects as Invalid.
Jun 26 2015, 7:11 AM · Daemons
joshuaspence added a comment to T8681: Insufficient permission for adding an object to repository database objects.

Ahhh, some of the files in /var/repo/D/objects/ are owner by root, possibly because I ran sudo ./bin/repository import at one stage.

Jun 26 2015, 7:10 AM · Daemons
joshuaspence created T8681: Insufficient permission for adding an object to repository database objects.
Jun 26 2015, 7:08 AM · Daemons
epriestley updated subscribers of T5873: Update Conduit for ApplicationTransactions, CustomFields and Edges.
Jun 26 2015, 3:45 AM · Haskell.org, Restricted Project, Restricted Project, ApplicationEditor, FreeBSD, Restricted Project, User Delight, Phacility, Custom Fields, Transactions, Conduit
epriestley merged task T8680: differential.query should return review status per reviewer into T5873: Update Conduit for ApplicationTransactions, CustomFields and Edges.
Jun 26 2015, 3:45 AM · Differential
epriestley closed T8679: Users reporting that pushing to the staging repository is pushing the entire history every time as Resolved.

T8238#116697

Jun 26 2015, 3:45 AM · Diffusion

Jun 25 2015

joshuaspence edited P1813 strlen() expects parameter 1 to be string, array given.
Jun 25 2015, 11:16 PM
epriestley closed T3820: Implement top-level "Spaces" that provide policy isolation to groups of objects as Resolved.

Spaces are now available in master. They'll promote to stable in this week's release, and are likely to leave prototype next week.

Jun 25 2015, 10:49 PM · Spaces, Wikimedia, Policy
epriestley closed T3820: Implement top-level "Spaces" that provide policy isolation to groups of objects, a subtask of T603: Support permissions/policies in all Phabricator applications, as Resolved.
Jun 25 2015, 10:49 PM · Policy, Wikimedia
epriestley closed T3820: Implement top-level "Spaces" that provide policy isolation to groups of objects, a subtask of T6787: Clarify UI for Objects with a non-default Policy, as Resolved.
Jun 25 2015, 10:48 PM · Design, Policy, Wikimedia
joshuaspence created T8678: Action menu is missing for tasks with a long title.
Jun 25 2015, 10:08 PM · Maniphest
joshuaspence added a comment to T8677: This revision has no diffs.

What's worse is that I don't know what to do with this revision... it seems that I can't attach a diff to it by creating a new diff via arcanist (arc diff --preview) and then attaching it via the dropdown. I could remove it with ./bin/remove destroy, but that seems a bit aggressive.

Jun 25 2015, 10:01 PM · Differential
epriestley updated subscribers of T8650: DifferentialTransactionEditor may race HarbormasterBuildWorker.
Jun 25 2015, 10:00 PM · Restricted Project, Harbormaster (v3), Differential
epriestley merged task T8677: This revision has no diffs into T8650: DifferentialTransactionEditor may race HarbormasterBuildWorker.
Jun 25 2015, 10:00 PM · Differential
joshuaspence updated the task description for T8677: This revision has no diffs.
Jun 25 2015, 9:59 PM · Differential
joshuaspence created T8677: This revision has no diffs.
Jun 25 2015, 9:59 PM · Differential
epriestley added a comment to T8672: PhabricatorTaskmasterDaemon fatals in PublishWorker.

I think the root cause of this issue is non-utf8 rawDiffs failing to encode when being passed to the publisher.

Jun 25 2015, 5:58 PM · Diffusion, Daemons
epriestley added a revision to T8672: PhabricatorTaskmasterDaemon fatals in PublishWorker: Unknown Object (Differential Revision).
Jun 25 2015, 5:56 PM · Diffusion, Daemons
epriestley added a comment to T1279: Show per-reviewer status in Differential revision reviewer list.

I've I'd be to work on a patch to add a config for this, if there any chances that this is going to be accepted ?

Jun 25 2015, 5:53 PM · Restricted Project, Differential
btrahan awarded T8650: DifferentialTransactionEditor may race HarbormasterBuildWorker a Like token.
Jun 25 2015, 5:04 PM · Restricted Project, Harbormaster (v3), Differential
epriestley added a revision to T8650: DifferentialTransactionEditor may race HarbormasterBuildWorker: Unknown Object (Differential Revision).
Jun 25 2015, 4:52 PM · Restricted Project, Harbormaster (v3), Differential
epriestley added a comment to T8650: DifferentialTransactionEditor may race HarbormasterBuildWorker.

I'm tentatively going to do something in the vein of (2) to stop this from bleeding and pursue a more complete fix after cutting stable. We have a general issue with this code not making sense:

Jun 25 2015, 4:50 PM · Restricted Project, Harbormaster (v3), Differential
epriestley added projects to T8650: DifferentialTransactionEditor may race HarbormasterBuildWorker: Differential, Harbormaster.
Jun 25 2015, 4:43 PM · Restricted Project, Harbormaster (v3), Differential
epriestley renamed T8650: DifferentialTransactionEditor may race HarbormasterBuildWorker from HeraldDifferentialRevisionAdapter::newLegacyAdapter() error from `arc diff` to DifferentialTransactionEditor may race HarbormasterBuildWorker.
Jun 25 2015, 4:19 PM · Restricted Project, Harbormaster (v3), Differential
epriestley added a comment to T8670: Harbormaster autoplan targets do not always complete.
  • D13435 should probably fix the root issue.
  • D13436 should make these kinds of issues louder/more obvious.
Jun 25 2015, 2:03 PM · Harbormaster
epriestley added a revision to T8657: Harbormaster v1 Errata: Unknown Object (Differential Revision).
Jun 25 2015, 2:02 PM · Harbormaster
epriestley added a revision to T8670: Harbormaster autoplan targets do not always complete: Restricted Differential Revision.
Jun 25 2015, 2:02 PM · Harbormaster
epriestley closed T8655: DrydockLease SearchEngine needs new view wrapper in redesign-2015 as Resolved by committing Restricted Diffusion Commit.
Jun 25 2015, 1:55 PM
epriestley added a revision to T8670: Harbormaster autoplan targets do not always complete: Unknown Object (Differential Revision).
Jun 25 2015, 1:53 PM · Harbormaster
epriestley added a comment to T8673: Maniphest Task Edit Edge Transactions should create metadata based on edit type (add or remove) .

This will return a list of tasks removed for a project within a certain time period, correct? If this can be done like this, this is exactly what is needed.

Jun 25 2015, 1:47 PM · Projects, Maniphest, Wikimedia, Transactions
epriestley added a comment to T8650: DifferentialTransactionEditor may race HarbormasterBuildWorker.

Several possible approaches spring to mind here:

Jun 25 2015, 1:29 PM · Restricted Project, Harbormaster (v3), Differential
epriestley added a comment to T8650: DifferentialTransactionEditor may race HarbormasterBuildWorker.

I think this is a race between the HarbormasterBuildWorker queued by harbormaster.sendmessage, and the DifferentialTransactionEditor attaching the diff to the revision.

Jun 25 2015, 1:23 PM · Restricted Project, Harbormaster (v3), Differential
epriestley added a comment to T8670: Harbormaster autoplan targets do not always complete.

Er, not that one. T8650.

Jun 25 2015, 1:20 PM · Harbormaster
epriestley added a comment to T8670: Harbormaster autoplan targets do not always complete.

See T8670.

Jun 25 2015, 1:20 PM · Harbormaster
epriestley added a revision to T8670: Harbormaster autoplan targets do not always complete: Unknown Object (Differential Revision).
Jun 25 2015, 1:17 PM · Harbormaster
epriestley added a revision to T8655: DrydockLease SearchEngine needs new view wrapper in redesign-2015: Unknown Object (Differential Revision).
Jun 25 2015, 1:09 PM
epriestley added a comment to T8673: Maniphest Task Edit Edge Transactions should create metadata based on edit type (add or remove) .

If there were a reflexive write of task transaction metadata to some project specific storage, (even some form of non-db log), this would be very useful, and much more elegant and smaller than having to query millions of Facts for the same information.

Jun 25 2015, 1:03 PM · Projects, Maniphest, Wikimedia, Transactions
epriestley added a comment to T8673: Maniphest Task Edit Edge Transactions should create metadata based on edit type (add or remove) .

Maybe I'm still just not understanding what you need. You can get all the data you want today like this, right?

Jun 25 2015, 12:59 PM · Projects, Maniphest, Wikimedia, Transactions
epriestley added a subtask for T8657: Harbormaster v1 Errata: T8670: Harbormaster autoplan targets do not always complete.
Jun 25 2015, 12:53 PM · Harbormaster